SQL Server:是否可以同时插入两个表中?

我的数据库包含三个表,称为Object_Table,Data_Table和Link_Table。链接表只包含两列,一个对象记录的标识和一个数据记录的标识。

我想将数据从DATA_TABLE复制到一个给定的对象标识,并将相应的记录插入到Data_Table和Link_Table中,用于不同的给定对象标识。

我可以通过选择一个表变量和循环通过为每次迭代做两个插入。

这是最好的方法吗?

编辑:我想避免循环有两个原因,第一是我懒惰和循环/临时表需要更多的代码,更多的代码意味着更多的地方,使一个错误,第二个原因是关注性能。

我可以复制所有的数据在一个插入,但如何获取链接表链接到新的数据记录,每个记录有一个新的ID?

在一个声明中:No.

在一次交易中:是的

BEGIN TRANSACTION
   DECLARE @DataID int;
   INSERT INTO DataTable (Column1 ...) VALUES (....);
   SELECT @DataID = scope_identity();
   INSERT INTO LinkTable VALUES (@ObjectID, @DataID);
COMMIT

好消息是,上述代码也保证是原子的,并且可以从客户端应用程序发送到服务器,在单个函数调用中有一个sql字符串,就好像它是一个语句一样。您还可以对一个表应用触发器,以获得单个插入的效果。但是,它最终仍然是两个语句,你可能不想为每个插入运行触发器。

http://stackoverflow.com/questions/175066/sql-server-is-it-possible-to-insert-into-two-tables-at-the-same-time

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:SQL Server:是否可以同时插入两个表中?