当其他表上没有更多行时,SQL 删除行
Posted
技术标签:
【中文标题】当其他表上没有更多行时,SQL 删除行【英文标题】:SQL delete rows when no more row on other table 【发布时间】:2019-08-10 04:34:39 【问题描述】:我正在尝试在 phpmyadmin 上创建触发器。
一旦WAITING_ROOM
中没有更多行,我想从表NEXT_GAME
中删除所有行。
我尝试了以下解决方案:
CREATE TRIGGER delete_begin_date AFTER DELETE
ON NEXT_GAME FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT * FROM WAITING_ROOM) THEN
DELETE FROM NEXT_GAME;
END IF;
END
我收到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 5
我做错了什么?
【问题讨论】:
【参考方案1】:您需要一个特定的分隔符来告诉 mysql 下一个 ;
不会结束 CREATE TRIGGER
语句。
DELIMITER $$
CREATE TRIGGER delete_begin_date AFTER DELETE
ON NEXT_GAME FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT * FROM WAITING_ROOM) THEN
DELETE FROM NEXT_GAME;
END IF;
-- vv----------------------- Notice this
END$$
DELIMITER ; -- switch back to the regular ;
【讨论】:
请注意,CREATE PROCEDURE
和 CREATE FUNCTION
也这样做了以上是关于当其他表上没有更多行时,SQL 删除行的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法查看从 Oracle DB 中删除行时将执行哪些步骤?