我有表匹配,有这些列: ID(with Identity spec.),Team1,Team2
。我需要将带有所有列的行复制ID=1
到带有 new 的 NEW 行automatic ID
。
现在我有这个代码:
SET IDENTITY_INSERT Match ON
INSERT INTO Match (ID,Team1,Team2)
SELECT
???,Team1,Team2
FROM
Match
WHERE ID='1';
但我不知道,如何获得新的自动 ID?
我有表匹配,有这些列: ID(with Identity spec.),Team1,Team2
。我需要将带有所有列的行复制ID=1
到带有 new 的 NEW 行automatic ID
。
现在我有这个代码:
SET IDENTITY_INSERT Match ON
INSERT INTO Match (ID,Team1,Team2)
SELECT
???,Team1,Team2
FROM
Match
WHERE ID='1';
但我不知道,如何获得新的自动 ID?
如果您的 ID 列是自动递增的,那么执行
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';
通过不打开IDENTITY_INSERT
并让系统创建ID
:
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID=1;
打开时IDENTITY_INSERT
,您是在告诉系统“我将分配一个通常您会自动生成的值”,因此您必须提供一个明确的值。但是由于系统的默认行为是自动生成一个,而您想要的是自动生成的值,因此您不应该打开此选项。
没有工具可以询问系统“请给我下一个您将分配的自动生成值”(SQL Server 2012 具有Sequence,它们在概念上与IDENTITY
列相似并且确实支持请求值的能力,但它们两个系统不一样)
这是片段。
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';
你根本没有通过它!
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';