gpt4 book ai didi

插入删除查询后MySQL触发器不起作用

转载 作者:行者123 更新时间:2023-11-29 12:09:07 26 4
gpt4 key购买 nike

我有以下触发器,在 phpMyAdmin 中创建:

表:tb_agenda
时间:之后
事件:插入

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中删除。

最佳答案

无需设置 WHERE,因为 NOW 意味着所有这些都将被删除。不需要 WHILE,因为每个触发器都有 FOR EACH ROW。您无法从插入的表中删除,因此删除将在 php 脚本中进行。

PHP 脚本:

$pdo->query("DELETE FROM tb_agenda");
$pdo->query("INSERT ...");

触发: 表:tb_agenda 时间:之前 事件:删除

BEGIN
INSERT INTO tb_realizacao (dt_agenda,
titulo,
titulo_en,
descricao,
descricao_en,
dt_cadastro)
VALUES (OLD.dt_agenda,
OLD.titulo,
OLD.titulo_en,
OLD.descricao,
OLD.descricao_en,
OLD.dt_cadastro);

END;

关于插入删除查询后MySQL触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30991343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com