create trigger ... on test1
for update
as
update a set a.[name] = b.[name]
from test2 a
join inserted b on a.[name] = b.[name]
for update
as
update a set a.[name] = b.[name]
from test2 a
join inserted b on a.[name] = b.[name]
for update
as
declare @dd char(2)
select @dd = name from inserted
update test2 set a.[name] = @dd where ....
触发器的设计用得比较多的就是inserted,或者deleted。deleted 和 inserted 是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。
for update
as
update a set a.[name] = b.[name]
from test2 a
join inserted b on a.[name] = b.[name]
方法﹕于SQL企業管理器中右擊test2表=>設計表(Design table)=>Relationships(關聯)=>New(新增)=>Primary key table 選擇test2表,Foreign key table 選擇test1表,關聯字段均選擇name=>OK確定即可
如果以前两表的姓名就是相等的,现在如果改变其中一个,就连带改这另一个的话就是这样写
create trigger trg1 on table1
for update as
begin
update table2
set [name]=(select name from inserted )
from deleted t1
where table2.[name]=t1.name
end
--本触发器只能对于一次插入一个记录有用。马可的语句是行不通的。
如果你不是通过name来标志两个表之问的关系就好办了。假设是通过ID1则create trigger trg1 on table1
for update as
begin
update table2
set [name]=t1.[name]
from insert t1
where table2.[id1]=t1.[id1]
end
for update as
begin
update table2
set [name]=t1.[name]
from inserted t1
where table2.[id1]=t1.[id1]
end他可能是笔误