2013-04-09 92 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 = '';