Create Trigger [Update_B] On A FOR UPDATE AS Insert B Select T1.id,T1.name,T1.sex,T1.address,T2.name,T2.address from Deleted T1 Inner Join Inserted T2 On T1.d=T2.id GO
A表和B表的結構不同 如:A(id,name,sex,address) B(id,name,sex,address,new(name),new(adress))--如果不存在主键被修改的问题,则将触发器修改如下: create trigger tr_process on A for insert,update,delete as insert b(id,name,sex,address,[new(name)],[new(adress)]) select d.id,d.name,d.sex,d.address,i.name,i.address from inserted i full join deleted d on i.id=d.id --假设id是主键(用于保证修改前后记录对应关系的字段)
select d.id,d.name,d.sex,d.address,i.name,i.address from inserted i full join deleted d on i.id=d.id 這當中的i,d是不是表示insert和delete的意思
for insert,update,delete
as
insert b select * from inserted union all select * from deleted
如:A(id,name,sex,address)
B(id,name,sex,address,new(name),new(adress))
Create Trigger [Update_B] On A
FOR UPDATE
AS
Insert B Select T1.id,T1.name,T1.sex,T1.address,T2.name,T2.address from Deleted T1 Inner Join Inserted T2 On T1.d=T2.id
GO
也就是说,你能保证主键不被修改?? 前面已经说过了,如果主键修改的情况下,需要另外的字段确定修改前后记录的对应关系.
如:A(id,name,sex,address)
B(id,name,sex,address,new(name),new(adress))--如果不存在主键被修改的问题,则将触发器修改如下:
create trigger tr_process on A
for insert,update,delete
as
insert b(id,name,sex,address,[new(name)],[new(adress)])
select d.id,d.name,d.sex,d.address,i.name,i.address
from inserted i full join deleted d on i.id=d.id --假设id是主键(用于保证修改前后记录对应关系的字段)
from inserted i full join deleted d on i.id=d.id
這當中的i,d是不是表示insert和delete的意思