tsql – T-SQL:在OUTPUT子句中插入原始值
发布时间:2020-12-12 16:19:27 所属栏目:MsSql教程 来源:网络整理
导读:我有一个表ItemID(ItemID,Name,…),其中ItemID是自动生成的身份 我想在这个表中添加行FROM select在同一个表上. 并将原始ItemID和NewlyGeneratedID之间的引用保存到表变量中. 所以我想让它看起来如下: DECLARE @ID2ID TABLE (OldItemID INT,NewItemID INT);I
我有一个表ItemID(ItemID,Name,…),其中ItemID是自动生成的身份
我想在这个表中添加行FROM select在同一个表上. 所以我想让它看起来如下: DECLARE @ID2ID TABLE (OldItemID INT,NewItemID INT); INSERT INTO Items OUTPUT Items.ItemID,INSERTED.ItemID INTO @ID2ID SELECT * FROM Items WHERE Name = 'Cat'; 但是Items.ItemID显然在这里无效.有没有解决方法使OUTPUT从SELECT语句中获取原始ItemID? 解决方法如果您在SQL Server 2008上,您可以使用 MERGE获取当前和新的ID.该技术描述于 this question.对于您的示例,该语句可能如下所示: MERGE Items AS t USING ( SELECT * FROM Items WHERE Name = 'Cat' ) AS s ON 0 = 1 WHEN NOT MATCHED BY TARGET THEN INSERT (target_column_list) VALUES (source_column_list) OUTPUT INSERTED.ItemID,S.ItemID INTO @ID2ID (OldItemID,NewItemID); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |