调用触发器时将行从一个表复制到另一个表

时间:2014-01-17 08:11:46

标签: sql sql-server database triggers

我有2张桌子

A)
 Table A
     ID | val | 
1.   1    m
2.   2    n
3.   1    o
4    1    p
5.   2    q


 Table B
    ID | val

所以我有一个要求,当任何行被插入到表A中时,相同的数据在表B中更新。我试图使用trigger.My触发器看起来像

CREATE Trigger tr_ForInserts
ON A
FOR INSERT
AS
BEGIN
 SET NOCOUNT ON;
insert into B values(NEW.ID,NEW.Val);
END

我面临的问题是如何识别表A中的哪一行被插入,因为我有单个ID的重复条目。如何在检测到触发器后检测到插入的确切行。什么应该是查询中的参数“插入B值(NEW.ID,New.Val)”.....这些新值应该是什么?

2 个答案:

答案 0 :(得分:1)

CREATE TRIGGER tg_insert ON A
FOR INSERT
AS
BEGIN
  INSERT B
  SELECT id, val
  FROM inserted
END

答案 1 :(得分:-1)

CREATE Trigger tr_ForInserts
ON A
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON;
    declare @id int;
    declare @val int;
    select @id=i.ID from inserted i;    
    select @val =i.Val from inserted i;
    insert into B values(@id, @val);
END