SQL的Insert触发器如何关联修改前的数据?

2025-04-08 09:40:34
推荐回答(3个)
回答1:

楼主说的是触发前触发器
例子:如果A表要插入数据X,如果插入数>0就插入
create trigger Mytrigger
on A
instead of insert
as
begin
declare @x int
select @x=X from inserted
if(@x>0)
begin
insert into A values(@x)
end
end
当然你可以再申明个变量将0换成查询原表数据 ,如:
create trigger Mytrigger
on A
instead of insert
as
begin
declare @x int
declare @Y int
-------------------------------------------------------
select @y=max([需要比对的数据列名]) from [原表表名]
-------------------------------------------------------
select @x=X from inserted
-----------------------------------------------------
if(@x>@y)
-----------------------------------------------------
begin
insert into A values(@x)
end
end

---横杠无意义,是要你注意下这里的代码的比对

回答2:

触发器里new.列名是新插入的数据;
原表数据就不用我说了吧。
要注意的是直接对比应该不行,需要create一个临时表用insert from,用这个临时表和原表去对比。写个存储过程就OK啦。

回答3:

1.声明一个变量,
2.查询inserted表的数据放入其中,
3.查询表中最大值,与变量值比较。