插入触发器从表1插入到表格2
我对SQL很陌生,所以请原谅我的无能。插入触发器从表1插入到表格2
我想写一个触发器,在插入表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来检查)。任何方向将不胜感激。
当您处于INSERT的触发器中时,您将得到一组名为INSERTED的记录。您可以使用它来执行任何您想要的操作。
如果您处于UPDATE触发器中,则会得到两组数据DELETED和INSERTED - 逻辑上,DELETED是旧数据将被新INSERTED数据覆盖。
对你而言,让我们在这里做几件事。首先,它是一个INSERT触发器,所以我们称之为。然后
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
另一件重要的事情是,SQL Server中的触发器对每个插入操作一次,如果插入一组记录,则必须能够处理该事件。这段代码是这样做的,但我希望提问的人理解为什么要使用基于集合的逻辑,而不是尝试将某些东西设置为变量并使用values子句。此外,总是通过执行多行插入更新或删除来测试触发器。 – HLGEM 2010-07-30 16:49:36
优秀的答案,非常感谢您的帮助和见解。 – 2010-07-30 17:25:02
对于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
只需用列名替换列1,列2和栏3。
什么是您使用RDBMS让我们从安装(这将有相同的列名作为输入数据)的数据,并用它来插入到您的详细信息表?触发器语法因Oracle,MySQL等不同而异。 – 2010-07-30 16:22:16
嗨,欢迎来到Stack Overflow。这是哪个数据库引擎? – 2010-07-30 16:22:34
我希望我知道如何为这个主板上的许多其他人可以“闻到”T-SQL/SQL Server查询... – 2010-07-30 16:24:39