1

我有表匹配,有这些列: 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?

4

4 回答 4

3

如果您的 ID 列是自动递增的,那么执行

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';
于 2013-06-13T07:05:51.167 回答
2

通过不打开IDENTITY_INSERT并让系统创建ID

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID=1;

打开时IDENTITY_INSERT,您是在告诉系统“我将分配一个通常您会自动生成的值”,因此您必须提供一个明确的值。但是由于系统的默认行为是自动生成一个,而您想要的是自动生成的值,因此您不应该打开此选项。

没有工具可以询问系统“请给我下一个您分配的自动生成值”(SQL Server 2012 具有Sequence,它们在概念上与IDENTITY列相似并且确实支持请求值的能力,但它们两个系统不一样)

于 2013-06-13T07:04:46.597 回答
2

这是片段。

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';
于 2013-06-13T07:05:06.640 回答
2

你根本没有通过它!

INSERT INTO Match (Team1,Team2)
SELECT
  Team1,Team2
FROM
  Match
WHERE ID='1';
于 2013-06-13T07:05:11.013 回答