我有表匹配,这个列: ID(with Identity spec.),Team1,Team2
。
我需要将ID=1
行与所有列复制到新行automatic ID
。
现在我有代码:
SET IDENTITY_INSERT Match ON
INSERT INTO Match (ID,Team1,Team2)
SELECT
???,Team1,Team2
FROM
Match
WHERE ID='1';
但我不知道,如何获得新的自动身份证?
答案 0 :(得分:3)
如果您的ID列是自动递增,请执行
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';
答案 1 :(得分:2)
不打开IDENTITY_INSERT
并让系统创建ID
:
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID=1;
当IDENTITY_INSERT
打开时,您告诉系统“我将分配一个通常您会自动生成一个值的值”,因此您必须提供一个显式值。但由于系统的默认行为是自动生成一个,而您想要的是自动生成的值,因此不应启用此选项。 / p>
无法向系统询问“请给我 分配的下一个自动生成的值”(SQL Server 2012具有Sequence s,其概念类似于IDENTITY
列并且支持请求值的能力,但它们两个系统不一样)
答案 2 :(得分:2)
这是片段。
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';
答案 3 :(得分:2)
你根本就没有通过它!
INSERT INTO Match (Team1,Team2)
SELECT
Team1,Team2
FROM
Match
WHERE ID='1';