日期:2014-05-17  浏览次数:20565 次

触发器小问题
我在table1里面建立了一个触发器,触发器的内容是 只要table1 里面有新增,删除,或更改就将 table1里面的的内容 更新到table2 里面,然后清空table1里面的内容。 我这个为什么最后table2里面没数据, 正确的该怎么写?
create trigger tg1 on table1 for insert,update,delete
 as
 update table2 set par_code=code from table1 where table1.id=table2.id
 delete table1
 go
 
insert into table1(id,code)values(30,1003)
select *  from Table2

------解决方案--------------------
create trigger tg1 on table1 for insert,update,delete
 as
 update table2 set par_code=code from inserted where table1.id=table2.id
 delete table1
 go
 
insert into table1(id,code)values(30,1003)
select *  from Table2 
------解决方案--------------------
引用:
create trigger tg1 on table1 for insert,update,delete
 as
 update table2 set par_code=code from inserted where table1.id=table2.id
 delete table1
 go
 
insert into table1(id,code)values(30,1003)……


如果是update和delete,那么光改称inserted没用。
------解决方案--------------------
我觉得你这个题目很矛盾,既然你的表table1每次都清空,怎么可能再会有update和delete操作呢。哈哈
像你这种情况,就是table1不保留数据,在table1上建立和instead of触发器不可以了吗

create table t1(id int,tname nvarchar(20))

create table t2(id int ,tname nvarchar(20))


create trigger tk_g on t1 instead of insert
as
insert into t2 select * from inserted