如何在插入之前编写触发器以检查重复检查6000+记录

时间:2016-03-08 11:36:19

标签: mysql sql triggers

到目前为止我想出了什么

CREATE TRIGGER no_duplicate BEFORE INSERT ON street_master
FOR EACH ROW
BEGIN
IF(EXISTS(SELECT id from street_master WHERE name=NEW.name))
THEN ;
END IF;
END

我应该在'then'部分写什么我每次写select语句或任何其他语法时都会出现语法错误......

1 个答案:

答案 0 :(得分:1)

正如IF Syntax所述:

  

每个 statement_list 由一个或多个SQL语句组成; statement_list

可以考虑使用SIGNAL引发错误,或者故意执行错误操作(比如调用不存在的过程)。但这是错误的方式来解决这个问题。

您真正想要的是定义UNIQUE索引。正如CREATE INDEX Syntax所述:

  

UNIQUE索引创建一个约束,使索引中的所有值必须是不同的。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。

因此:

CREATE UNIQUE INDEX uniqueNames ON street_master (name);