我的数据库包含三个表,称为Object_Table
, Data_Table
and Link_Table
。链接表仅包含两列,对象记录的标识和数据记录的标识。
我想从中复制数据DATA_TABLE
它链接到一个给定的对象标识并将相应的记录插入到Data_Table
and Link_Table
对于不同的给定对象标识。
I can通过选择一个表变量并循环为每次迭代执行两次插入来完成此操作。
这是最好的方法吗?
Edit:我想避免循环有两个原因,第一个原因是我很懒,循环/临时表需要更多代码,更多代码意味着更多地方会犯错误,第二个原因是对性能的担忧。
我可以复制一次插入中的所有数据,但如何让链接表链接到新数据记录,其中每条记录都有一个新 ID?
In one 陈述: No.
In one 交易: Yes
BEGIN TRANSACTION
DECLARE @DataID int;
INSERT INTO DataTable (Column1 ...) VALUES (....);
SELECT @DataID = scope_identity();
INSERT INTO LinkTable VALUES (@ObjectID, @DataID);
COMMIT
好消息是上面的代码也保证是atomic,并且可以在单个函数调用中使用一个 sql 字符串从客户端应用程序发送到服务器,就好像它是一条语句一样。您还可以将触发器应用于一个表以获得单个插入的效果。但是,它最终仍然是两个语句,您可能不想运行触发器every insert.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)