当没有子行时,phpMyAdmin创建一个删除父行的触发器

时间:2014-10-31 19:16:34

标签: mysql phpmyadmin

在phpMyAdmin中我有两个表:列表和教科书。列表中有一个来自教科书的外键(isbn)。我正在尝试创建一个触发器,在删除列表条目后,检查列表中是否有任何其他行与已删除的行具有相同的isbn。如果没有包含此isbn的行,则删除教科书中包含该isbn的行。这是我在phpMyAdmin中尝试过的代码:

CREATE TRIGGER del_textbook AFTER DELETE ON listings
FOR EACH ROW
BEGIN
IF (SELECT COUNT(*) FROM listings WHERE isbn = (OLD.isbn)) > 0
    DELETE FROM textbooks WHERE isbn = (OLD.isbn);
END IF;
END;

它给出了这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL     server version for the right syntax to use near 'DELETE FROM textbooks WHERE isbn = (OLD.isbn); END IF; END' at line 5 

在执行此操作之前,我还将分隔符设置为//。

有人能告诉我我的代码格式是否正确,或者为什么会出现这种错误?我知道phpmyAdmin的格式有点挑剔。提前谢谢!

1 个答案:

答案 0 :(得分:0)

想出来。首先,不要使用SQL查询窗口。使用“触发器”选项卡。我也忘记了" THEN",所以代码看起来像:

BEGIN
     IF ((SELECT COUNT(*) FROM listings WHERE isbn = OLD.isbn) < 1) THEN
     DELETE FROM textbooks WHERE isbn = OLD.isbn;
     END IF;
END