1

この列 を持つテーブル Match があります: ID(with Identity spec.),Team1,Team2ID=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

2

オンIDENTITY_INSERTにせず、システムに以下を作成させることによりID:

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

をオンにするIDENTITY_INSERTと、システムに「通常は自動生成する値を割り当てる」ことになるため、明示的な値を指定する必要があります。ただし、システムのデフォルトの動作は自動生成であり、必要なのは自動生成された値であるため、このオプションをオンにしないでください。

システムに「次に割り当てた自動生成値を教えてください」と尋ねる機能はありません(SQL Server 2012 にはSequenceIDENTITYがあります。これは概念が列に似ており、値を要求する機能をサポートしていますが、2 つのシステムは同じではありません)

于 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 に答える