我已将一组数据插入数据库,现在我想删除所有具有空值的行。我怎样才能做到这一点?可以使用触发器来完成吗?
示例:
表格书籍包含author_name
,title
,price
。
插入数据后,我想删除author_name
列中包含空值的所有行。这是我到目前为止所写的内容:
CREATE TRIGGER trigger1
AFTER INSERT
ON BOOKS
FOR EACH ROW
BEGIN
DELETE FROM BOOKS WHERE author_name = ''
END;
这不起作用:(
答案 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 = '';