我正在学习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/