2

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

例子:

表 BOOKS 包含author_name, title, price.

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

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

这不起作用:(

4

1 回答 1

1

问题是你已经BEGIN…END绕过了一个没有用;. 但是,如果您放置了 missing ;,则需要为整个定义引入分隔符,因为如果您不这样做,内部;会破坏它。

因此,将 a放在语句;的末尾并在触发器定义之前引入 a:DELETEDELIMITER

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 = '';
于 2013-04-09T07:26:26.003 回答