需求是 : 若A表发生insert,update操作,则往B表中写入A表刚被insert或者update的记录的c字段。
问题 : insert时的语法怎么写??
这是我的sql:
create trigger tempTri
on A
for insert,update
as
begin
insert into B values (A.c); --这样写不行,提示()中不能放列
-- update B set c = a.c from A a; 这种update写法没问题 但不能满足需求
end
select c from inserted
每个触发器都会创建两个逻辑专用表:inserted 和 deleted表,表结构与被触发作用的表结构相同 执行完毕后 与触发器相关的两个表都会被删除。
当执行insert语句时,inserted表存放要向表中插入的所有行;当执行delete语句时,deleted表存放要向表中删除的所有行
当执行update语句时,相当于执行一个delete操作,再执行一个insert操作,旧的行先被移动到deleted表,然后再在新值插入到inserted表和目标表。
create trigger tempTri
on A
for insert,update
as
begin
insert into B values (inserted.c);
end