Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在插入触发器上从表1插入到表2_Sql_Sql Server_Tsql_Triggers - Fatal编程技术网

Sql 在插入触发器上从表1插入到表2

Sql 在插入触发器上从表1插入到表2,sql,sql-server,tsql,triggers,Sql,Sql Server,Tsql,Triggers,我对SQL非常陌生,所以请原谅我的无能 我试图编写一个触发器,在插入表1时,将该记录插入表2中 表1是[rps\u lab\u dev].[dbo].[lab\u Employee\u Time\u Off] 表2是[dbo].[Lab\u Employee\u Time\u Off\u Detail] CREATE TRIGGER updatetrig ON [rps_lab_dev].[dbo].[Lab_Employee_Time_Off] FOR INSERT AS ... 我不确

我对SQL非常陌生,所以请原谅我的无能

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

表1是
[rps\u lab\u dev].[dbo].[lab\u Employee\u Time\u Off]

表2是[dbo].[Lab\u Employee\u Time\u Off\u Detail]

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

FOR INSERT

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

对于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即可。

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

如果您处于更新的触发器中,那么您将得到两组删除和插入的数据—逻辑上,删除的数据是将被新插入的数据覆盖的旧数据

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

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

您使用的是什么RDBMS?触发器语法在Oracle、MySQL等之间有所不同。您好,欢迎使用堆栈溢出。这是哪个数据库引擎?我希望我知道如何像这个板上的许多其他查询一样“嗅”T-SQL/SQL Server查询…@sheepsimulator:方括号,dbo和触发器-如果只有方括号,可能是MS Access。TSQL可以是Sybase,但这样的问题很少见……另一件很重要的事情是,SQL Server中的触发器在每次插入时运行一次,如果插入一组记录,则必须能够处理该问题。这段代码可以做到这一点,但我希望问这个问题的人理解为什么要使用基于集合的逻辑,而不是试图将事物设置为变量并使用values子句。另外,始终通过执行多行插入更新或删除来测试触发器。