如何在触发器中设置虚拟表(插入和删除)值

时间:2013-09-24 12:45:14

标签: c# sql sql-server sql-server-2008 triggers

当更新事件发生时触发器被触发,我正在更新一个名为A的表。我的要求是我需要将数据插入另一个表(从A到B),并且从虚拟表(已删除和插入)获得该表的值。如何设置插入和删除的虚拟表值

TRIGGER

CREATE TRIGGER trgAfterUpdate ON A
FOR UPDATE
AS
BEGIN
Insert into B(col1,col2,col3,col4,col5) values ()  // col1 to 4 inserted values col5 Deleted table value
END

2 个答案:

答案 0 :(得分:1)

Insert B(col1,col2,col3,col4,col5) 
select inserted.col1, inserted.col2, inserted.col3, inserted.col4, deleted.col5
from inserted
     inner join deleted on inserted.IDField = deleted.IDField

答案 1 :(得分:0)

我在同一类型项目上工作,我必须在一定时间后定期更新并将其插入表格中,但表格应包含所有唯一值...以解决此问题我做了以下。

  1. 拿了两张类似实体的表。

  2. 在其中一个表中我获取了所有的值,之后我将其与其他表进行比较以获取重复数据,然后将其删除,然后通过将表格复制到另一个表格将其插入到新表中。


  3. SqlCommand cmd2 = new SqlCommand("delete table2 from table2 inner join tabl1 on table1.some entries=table2.on same entry", connection_object);       
    cmd2.ExecuteNonQuery();
    SqlCommand cmd3 = new SqlCommand("insert into table1 (all values) select all values from table2", connection_object);
    cmd3.ExecuteNonQuery();
    connection_object.Close();