【发布时间】:2017-07-20 03:39:47
【问题描述】:
我在使用 MySQL 数据库中的触发器时遇到了一点问题。我有一个带有两个表的数据库:“任务”和“文件”。 “任务”表有一个字段,它是“文件”表中主键的外键。它有时也可能为空。
我要完成的是首先删除“tasks”表中的一行,然后使用触发器删除“files”表中的相应行。
这是我现在使用的触发器:
DELIMITER //
CREATE TRIGGER after_delete_file AFTER DELETE ON tasks
FOR EACH ROW
BEGIN
DECLARE fileId int;
SELECT file INTO fileId FROM tasks WHERE id=old.id;
DELETE FROM files WHERE id=fileId;
END;//
DELIMITER ;
“任务”表中的“文件”字段是包含外键的字段。在我运行的示例中,该字段从未为空。
问题是select语句总是返回null。触发此触发器的删除语句运行良好,但“文件”表中的行永远不会被删除。我试图在测试表上插入“fieldId”变量,它总是保存一个空值。
那个触发器有问题吗?也许我正在尝试做一些根本不可能的事情?
非常感谢所有帮助:)
【问题讨论】: