Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 插入后删除空行的触发器_Mysql_Sql - Fatal编程技术网

Mysql 插入后删除空行的触发器

Mysql 插入后删除空行的触发器,mysql,sql,Mysql,Sql,我已经在数据库中插入了一组数据,现在我想删除所有具有空值的行。我该怎么做?这可以使用触发器来完成吗 例如: 表格图书包含作者姓名、标题、价格 插入数据后,我想删除author\u name列中所有值为空的行。以下是我到目前为止所写的内容: CREATE TRIGGER trigger1 AFTER INSERT ON BOOKS FOR EACH ROW BEGIN DELETE FROM BOOKS WHERE author_name = '' END; 这是不起

我已经在数据库中插入了一组数据,现在我想删除所有具有空值的行。我该怎么做?这可以使用触发器来完成吗

例如:

表格图书包含作者姓名、标题、价格

插入数据后,我想删除
author\u name
列中所有值为空的行。以下是我到目前为止所写的内容:

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

这是不起作用的:(

问题是,在一个没有用
分隔的语句周围有
BEGIN…END
。但是,如果你把缺少的
放进去,你需要为整个定义引入一个元分隔符,因为如果你不这样做,内部的
将破坏它

因此,在
DELETE
语句的末尾放一个
,并在触发器定义之前引入一个
分隔符:

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 = '';

此触发器是否按预期触发?否..它显示了一些语法错误..是否甚至可以在插入后删除插入前而不是插入后删除插入前我将无法访问数据,是否有其他解决方法?