有没有一种方法可以保留、跳过或增加标识列的值?
我有两个表,它们之间具有一对一的关系。第一个表具有IDENTITY PK列,第二个表具有int PK(不是IDENTITY)。我通常在第一个表中插入数据并获取ID,然后再插入第二个表。这样做可以正常工作。
现在我需要向第二个表中插入数据,而不是先插入第一个表。那么如何增加IDENTITY seed的值,以便我可以将其插入到第二个表中,但在第一个表的ID处“留下空隙”?
编辑:更多信息
我有两个表,它们之间具有一对一的关系。第一个表具有IDENTITY PK列,第二个表具有int PK(不是IDENTITY)。我通常在第一个表中插入数据并获取ID,然后再插入第二个表。这样做可以正常工作。
现在我需要向第二个表中插入数据,而不是先插入第一个表。那么如何增加IDENTITY seed的值,以便我可以将其插入到第二个表中,但在第一个表的ID处“留下空隙”?
编辑:更多信息
-- I need new seed number, but not table row
-- so i will insert foo row, get id, and delete it
INSERT INTO TABLE1 (SomeRequiredField) VALUES ('foo');
SET @NewID = SCOPE_IDENTITY();
DELETE FROM TABLE1 WHERE ID=@NewID;
-- Then I can insert in TABLE2
INSERT INTO (ID, Field, Field) VALUES (@NewID, 'Value', 'Value');
再次确认 - 这确实可行。
问题是我能否在不插入表中的情况下获得ID?
DBCC需要所有者权限;是否有一个干净的用户可调用的SQL来完成这个操作?