在插入触发器上从table1插入到table2

时间:2010-07-30 16:19:35

标签: sql sql-server tsql triggers

我对SQL很新,请原谅我的无能。

我正在尝试编写一个触发器,在插入表1时,将该记录插入表2中。

表1为[rps_lab_dev].[dbo].[Lab_Employee_Time_Off]

表2为[dbo].[Lab_Employee_Time_Off_Detail]

CREATE TRIGGER updatetrig
ON [rps_lab_dev].[dbo].[Lab_Employee_Time_Off]

FOR INSERT

AS
...

我不确定从哪里开始(如果这是正确的,我现在没有sql检查)。任何方向将不胜感激。

2 个答案:

答案 0 :(得分:5)

对于SQL Server ...

CREATE TRIGGER updatetrig 
ON [rps_lab_dev].[dbo].[Lab_Employee_Time_Off] 

FOR INSERT 

AS 

INSERT INTO [dbo].[Lab_Employee_Time_Off_Detail] (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM inserted

只需将Column1,Column2和Column3替换为列名。

答案 1 :(得分:5)

当您处于INSERT的触发器中时,您将获得一组名为INSERTED的记录。您可以使用它来执行您想要的任何操作。

如果您处于UPDATE的触发器中,那么您将获得两组数据DELETED和INSERTED - 逻辑上,DELETED是将被新INSERTED数据覆盖的旧数据。

在你的情况下,让我们在这里做几件事。首先,它是一个INSERT触发器,所以我们称之为。然后让我们从INSERTED获取数据(它将具有与传入数据相同的列名)并使用它插入到您的详细信息表中

CREATE TRIGGER Lab_Employee_Time_Off_InsertAction
ON [rps_lab_dev].[dbo].[Lab_Employee_Time_Off]

FOR INSERT

AS


INSERT INTO [dbo].[Lab_Employee_Time_Off_Detail] (Col01, Col02, Col03)
SELECT Col1, Col2, Col3
FROM Inserted

GO

http://msdn.microsoft.com/en-us/library/ms189799.aspx