create trigger tr on a for insert,update,delete as begin delete b where Pid in (select pid from deleted) insert b select * from inserted end go
我也是这么想的,不过这之前,还是想问问各位,update能不能这样干\了,.
写UPdate语句,就必须提供列名,不能你Insert那样用*
Update 表1 Select * From 表2 join 表1 on 表2.pid=表1.pid
用出發器吧create trigger trg_a on a for insert,update,delete as begin delete a from a a,deleted b where a.xx=b.xx insert into b select * from inserted end這樣就讓兩個表保持同步.
create trigger trg_name on b from delete,insert,delete as begin delete a from a a,deleted b where a.xx=b.xx insert into b select * from insertedend
Update a set PId=b.pid From 表1 a, 表2 b Where a.PId=b.PId
Update a
set PId = b.pid
From
表1 a, 表2 b
Where
a.PId=b.PId
如果不正确,那么请楼主再把问题表述一下。谢谢。
是这样的.我有两个表. a和ba表和b表数据结构是一样的,a表是主表,b表是他的一个副本.
当a表有数据变动时呢,b表也要变.
所以我想可以不可以 为update语句指定一个select语句,进行更新.
可是字段很多,写起来很是麻烦.我不想写字段名,太多了.这个要怎么写呢.
我是这么写的 update [a] select * from [b] where pid=pidpid是个己知的条件,我知道要更新那一条记录,这是一个动作,不是一个例行的过程.
就是a 变,b也要变.
不过呢.把所有字段太多,我想update可以不可以不写字段名,全更新过去
for insert,update,delete
as
begin
delete b where Pid in (select pid from deleted)
insert b select * from inserted
end
go
Update 表1 Select * From 表2 join 表1 on 表2.pid=表1.pid
for insert,update,delete
as
begin
delete a from a a,deleted b where a.xx=b.xx insert into b select * from inserted
end這樣就讓兩個表保持同步.
as
begin delete a from a a,deleted b where a.xx=b.xx insert into b select * from insertedend