我正在学习SQL触发器,并且已经阅读了一些有关删除表a中的行时如何删除表B中的行的教程。

我有以下触发器:

CREATE DEFINER=`root`@`localhost` TRIGGER `testDB`.`test_BEFORE_DELETE`
BEFORE DELETE ON `testDBtable` FOR EACH ROW
BEGIN
    Delete from testDBtable2 where id = (select id from deleted);
END


testDBtable和testDBtable2都有2列,即id和name。

当我从testDB删除一行时,收到以下错误:

Error Code: 1146. Table 'testDB.deleted' doesn't exist  0.000 sec


我正在使用MYSQLWorkBench。

最佳答案

我认为OLD.id是您需要的,而不是select id from deleted

完整查询:

CREATE DEFINER=`root`@`localhost` TRIGGER `testDB`.`test_BEFORE_DELETE`
BEFORE DELETE ON `testDBtable` FOR EACH ROW
BEGIN
    Delete from testDBtable2 where id = OLD.id;
END

关于mysql - 触发器:DELETED表不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29641418/

10-11 02:48
查看更多