我正在学习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。
答案 0 :(得分:0)
我认为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