什么,我想出了迄今为止我怎样写插入之前触发检查重复检查6000+记录
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
我应该写在“然后”的一部分,我得到语法错误,每次我写选择声明或任何其他......
什么,我想出了迄今为止我怎样写插入之前触发检查重复检查6000+记录
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
我应该写在“然后”的一部分,我得到语法错误,每次我写选择声明或任何其他......
如记录IF Syntax下:
每个
statement_list
由一个或多个SQL语句组成;空的statement_list
是不允许的。
您可能考虑使用SIGNAL
引发错误,或者故意进行错误的操作(如调用一个不存在的程序)。但这是错误的方式来解决这个问题。
你真正想要的是定义一个UNIQUE
索引。作为CREATE INDEX Syntax下记载:
甲
UNIQUE
索引创建,使得索引中的所有值必须是不同的约束。如果尝试使用与现有行匹配的键值添加新行,则会发生错误。
这样:
CREATE UNIQUE INDEX uniqueNames ON street_master (name);
“身份证”是我的唯一约束......所以if语句尝试检索副本的'id'(如果存在),即OLD.name = NEW。名称,其中“名称”是街道名称,并在表格street_master中。我只想在插入之前匹配两个字符串。一个是我插入新的,另一个是来自数据库的一个。 –
'UNIQUE'是要去的地方。 –
name是一个用户输入,'id' - > UNIQUE由系统自动定义.....所以我必须在现有记录中匹配'name',然后才能在表中插入新记录 –
@ eggyal..please精心...我一直在思考这个几个小时,在没有任何歌厅解决 –