2013-04-09 2 views
2

Я вставил набор данных в базу данных, теперь хочу удалить все строки с пустыми значениями. Как я могу это сделать? Можно ли это сделать с помощью триггеров?Триггер для удаления пустых строк после INSERT

Пример:

таблица содержит КНИГИ 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

обжигают этот триггер, как ожидалось? – Lion

+0

NO .. показывает какую-либо синтаксическую ошибку..Е это даже возможно удалить после вставки – harin04

+0

использования перед вставкой, а не после вставки – divyabharathi

ответ

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 = ''; 
Смежные вопросы