插入时的SQL Server触发器以及如何引用插入的数据

jon*_*aze 3 sql-server triggers insert

高级别我有两个表需要镜像一些数据.我无法通过并更改所有代码以写入两者,所以我想我会使用SQL触发器将数据插入到第二个表中的任何时候.这是我被困的地方:

CREATE TRIGGER new_trigger_INSERT
ON old_table
FOR INSERT
INSERT INTO new_table (id, first_name, last_name)
VALUES () --This is where I'm lost, I need to insert some of the data from the insert that executed this trigger
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,如果有更好的方法来实现这一点,请告诉我.

Mit*_*eat 12

使用' inserted '表:

CREATE TRIGGER new_trigger_INSERT 
ON old_table 
FOR INSERT 
INSERT INTO new_table (id, first_name, last_name) 
SELECT col1, col2, col3 FROM inserted
Run Code Online (Sandbox Code Playgroud)

[PS:不要忘记确保你的触发器处理多行......]

参考.创建触发器

好文章:探索SQL Server触发器

  • @ jon3laze:很多"触发新手"造成的常见错误是假设触发器每插入一行就会触发一次 - 因此他们认为"插入"表只包含一行.这不是它的工作方式 - 如果你插入一批50行,你的INSERT触发器将被激活**整个批次**,"插入"表将包含50行 - 你需要能够处理那种情况 (8认同)