我想知道,如果有直接的方式将ID(在带有IDENTITY(1,1)的ID列中生成)插入到另一列中。 换句话说,我正在寻找SCOPE_IDENTITY()我可以在插入时获取,而不是在提交INSERT之后。
我有一个表,其中有一个带有辅助ID(SID)的列,它引用同一个表中的行,在某些特殊情况下它引用自身。 我知道这样做的唯一方法是在这些情况下执行INSERT并因此更新SID。简化示例:
DECLARE @ID INT
INSERT INTO Table (SID) VALUES (NULL);
SELECT @ID = SCOPE_IDENTITY();
UPDATE Table SET SID = ID WHERE ID = @ID;
有一些小故障,即由于该行可能会或可能不会引用自身等等。
答案 0 :(得分:1)
您可以使用AFTER INSERT
触发器执行此操作。如果是自引用,请将列保留为NULL并使触发器将列设置为等于IDENTITY列。
在伪:
inserted
加入表格,过滤SID为空的SID = ID
如果无法使用NULL值,则应该可以根本没有引用,可以使用另一个存根值。例如。如果ID始终为正,则为-1。在这种情况下,应用上述工作方式并将NULL替换为-1。