2013-04-09 87 views
2

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

实施例:

表丛书包含author_nametitleprice

插入数据后,我想要删除author_name列中具有空值的所有行。这是我到目前为止已经写的:

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

这不是工作:(

+0

如预期该触发器触发了? – Lion 2013-04-09 05:20:28

+0

NO ..its显示一些语法错误..甚至可以在插入之前使用插入 – harin04 2013-04-09 05:48:33

+0

之前删除而不是插入 – divyabharathi 2013-04-09 06:06:01

回答

1

的问题是,你有没有周围用;界定的声明BEGIN…END如果你把丢失的;。然而,你将需要引入分隔符为整个定义的,因为,如果不这样做,内;会打破它。

所以,把;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 = '';