INSERT后触发删除空行

时间:2013-04-09 05:09:48

标签: mysql sql database mysqli

我已将一组数据插入数据库,现在我想删除所有具有空值的行。我怎样才能做到这一点?可以使用触发器来完成吗?

示例:

表格书籍包含author_nametitleprice

插入数据后,我想删除author_name列中包含空值的所有行。这是我到目前为止所写的内容:

CREATE TRIGGER trigger1
  AFTER INSERT
  ON  BOOKS
  FOR EACH ROW 
  BEGIN
  DELETE FROM BOOKS WHERE author_name = ''  
END;

这不起作用:(

1 个答案:

答案 0 :(得分:1)

问题在于,BEGIN…END围绕未使用;分隔的陈述。但是,如果您放置了缺少的;,则需要为整个定义引入 meta 分隔符,因为如果您不这样做,内部;会打破它。

所以,在;语句的末尾添加DELETE并在触发器定义之前引入DELIMITER

DELIMITER $$
CREATE TRIGGER trigger1
  AFTER INSERT
  ON  BOOKS
  FOR EACH ROW 
BEGIN
  DELETE FROM BOOKS WHERE author_name = '';
END
$$

或者,由于正文只包含一个语句,因此您只需删除BEGIN…END

即可
CREATE TRIGGER trigger1
  AFTER INSERT
  ON  BOOKS
  FOR EACH ROW 
DELETE FROM BOOKS WHERE author_name = '';