主键约束问题
我在触发器里有先INSERT INTO A表,然而A表上有主键约束,当然会中断插入数据,弹出主楗约束信息,会不会中止触发器?INSERT下面还有一堆程序,还能执行吗?如果能让它执行,该如何做的?(有主键约束时跳过不插入数据,执行下面程序) 问题点数:50、回复次数:6Top
1 楼wgsasd311(自强不息)回复于 2006-03-07 12:39:25 得分 20
我在触发器里有先INSERT INTO A表,然而A表上有主键约束,当然会中断插入数据,弹出主楗约束信息,会不会中止触发器?INSERT下面还有一堆程序,还能执行吗?
==>当触发器(for类型)中代码执行报错,会回滚此次触发的操作(INSERT ,UPDATE ,DELETE).
如果能让它执行,该如何做的?(有主键约束时跳过不插入数据,执行下面程序)
==>
CREATE TRIGGER TI_TB ON TB FOR INSERT
AS
IF not EXISTS(select 1 from ta where 主键='你插入的主键值')
insert into ta
....
goTop
2 楼panjinfu80(天蓝水晶)回复于 2006-03-07 12:49:11 得分 0
IF not EXISTS(select 1 from ta where 主键='你插入的主键值')
如果表中有大量数据时这个查询很慢的,就因为用这样的语句,触发器执行很慢的。
IF not EXISTS(select * from ta where 主键='你插入的主键值')两个语句有什么区别?那个速度快?Top
3 楼panjinfu80(天蓝水晶)回复于 2006-03-08 21:10:52 得分 0
??Top
4 楼ReViSion(和尚)回复于 2006-03-08 23:45:19 得分 20
IF not EXISTS(select 1 from ta where 主键='你插入的主键值')
如果表中有大量数据时这个查询很慢的,就因为用这样的语句,触发器执行很慢的。
IF not EXISTS(select * from ta where 主键='你插入的主键值')两个语句有什么区别?那个速度快?
--------------------------------------------------------------
显然是上面要快的多,理由嘛,用看的
执行计划上很明显Top
5 楼panjinfu80(天蓝水晶)回复于 2006-03-12 23:17:34 得分 0
!Top
6 楼aniude(重返荣耀)回复于 2006-03-12 23:59:27 得分 10
1 返回一个列,*返回N个列,你说呢?Top




