日期:2014-05-19  浏览次数:20453 次

我写的防止相同数据插入的触发器有问题,大家看看。
CREATE   TRIGGER   TG_TB1   ON   table1   FOR   INSERT
AS
BEGIN
IF   (SELECT   COUNT(1)   FROM   table1   A   INNER   JOIN   INSERTED   B   ON   A.ygid   =   B.ygid   AND   A.changedate   =   B.changedate)   >   1
BEGIN
ROLLBACK   TRANSACTION
RAISERROR( 'ERROR ',   1,   16)
END
END
上面这个触发器的作用是要防止table1中插入的数据的ygid和changedate字段同时重复。单条插入的时候正常的,如果是批量的插入数据就会都插不进去。
如:INSERT   INTO   table1(ygid,changedate)   SELECT   ygid,changedate   FROM   table2

------解决方案--------------------
建议楼主将两个字段建立一个联合索引,并添加Unique约束
这样就不用触发器了