这个触发器怎么写? (0分)

  • 主题发起人 主题发起人 稻草
  • 开始时间 开始时间

稻草

Unregistered / Unconfirmed
GUEST, unregistred user!
比方有一个表
字段A 字段B 字段C 字段D
记录1 1 1 3 4
记录2 2 3 3 1
.. .. .. .. ..
.. .. .. ..
现在需要更新或者插入数据,当输入的数据出现
字段A=1, 字段B=1, 字段C=3, 字段D=4 或者
字段A=2, 字段B=3, 字段C=3, 字段D=1
的时候(其他的记录也一样),就不允许更新或插入

数据库 Oracle 8i

 
用instead of 触发器
 
将4个字段组成主键不行吗?

这样建触发器的话,若数据量比较大时,效率比较低的
 
create trigger tri_test on 表名
instead of insert
as
begin
declare @a varchar(10)
declare @b varchar(10)
declare @c varchar(10)
declare @d varchar(10)
declare @i int

select @a=a, @b=b, @c=c, @d=d from inserted
select @i=count(*) from 表名 where a=@a and b=@b and c=@c and d=@d
if @i<1
insert into 表名values(@a, @b, @c, @d)

end;
 
create trigger tri_test on 表名
instead of insert
as
begin
declare @a varchar(10)
declare @b varchar(10)
declare @c varchar(10)
declare @d varchar(10)
declare @i int

///select @a=a, @b=b, @c=c, @d=d from inserted (sql server 的);
select @i=count(*) from 表名 where a=new.a and b=new.b and c=new.c and d=new.d
if @i<1
//// insert into 表名values(@a, @b, @c, @d)
insert into 表名values(new.a,new.b,new.c,new.d);

end;
 
后退
顶部