【发布时间】:2015-06-22 23:08:59
【问题描述】:
我有以下触发器,在 phpMyAdmin 中创建:
Table: tb_agenda
Time: AFTER
Event: INSERT
BEGIN
DECLARE x INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM tb_agenda INTO x;
SET i = 0;
WHILE i < x DO
INSERT INTO tb_realizacao (dt_agenda,
titulo,
titulo_en,
descricao,
descricao_en,
dt_cadastro)
SELECT dt_agenda,
titulo,
titulo_en,
descricao,
descricao_en,
dt_cadastro
FROM tb_agenda
WHERE dt_agenda < NOW();
DELETE FROM tb_agenda
WHERE dt_agenda < NOW();
SET i = i + 1;
END WHILE;
END
这是什么:插入tb_agenda后,它应该搜索dt_agenda(日期)低于NOW()的数据,添加到tb_realizacao,然后从tb_agenda中删除这个旧数据。问题是删除查询似乎没有执行,数据正常添加到tb_realizacao但没有从tb_agenda删除。
【问题讨论】:
-
你为什么不直接使用
new来访问正在插入的记录?此外,您的循环什么也不做。 . .循环遍历表中的所有记录似乎很奇怪。 -
我需要删除旧数据。例如,如果我在 2016 年 6 月 22 日安排一个活动,在 2016 年 6 月 23 日,如果我插入一个新活动,则应该删除 2016 年 6 月 22 日的活动。