既存のデータを持つ表の列に値0を挿入しようとしています。 識別列は(1,1)です。値0を挿入するために既存のデータを削除する必要がありますか?ID列に値0を挿入してください。
SET IDENTITY_INSERT table ON
INSERT INTO table (id,...) Values(0,.....)
SET IDENTITY_INSERT table OFF
私はこれを実行しようとしましたが、スクリプトがハングアップしています。
既存のデータを持つ表の列に値0を挿入しようとしています。 識別列は(1,1)です。値0を挿入するために既存のデータを削除する必要がありますか?ID列に値0を挿入してください。
SET IDENTITY_INSERT table ON
INSERT INTO table (id,...) Values(0,.....)
SET IDENTITY_INSERT table OFF
私はこれを実行しようとしましたが、スクリプトがハングアップしています。
identity_insert
を使用する場合、挿入の列名を指定する必要があります。
create table t (id int not null identity(1,1), col varchar(32));
set identity_insert dbo.t on;
insert into dbo.t (id,col) values(0,'test');
set identity_insert dbo.t off;
rextesterデモ:http://rextester.com/VMT42836
戻り
+----+------+
| id | col |
+----+------+
| 0 | test |
+----+------+
申し訳ありませんが、私も列名を指定します –
あなたがIDにPKまたは一意索引がある場合は、その後
create table #test (id int identity(1,1), val int)
insert into #test (val) values (10),(11)
set identity_insert #test on
insert into #test (id, val) values (0,12)
set identity_insert #test off
に、この使用してセットIDENTITY_INSERTテーブルを行うことができますが、あなたは制約エラーを受けるでしょう
質問のコードはidentity_insertをオンにしません。 *具体的には、この答えは質問のコードと区別するためのものですか? –
良い点...ハングすると、実際のエラーを理解してエラーが発生する理由を理解する必要があります... –
create table #test (id int identity(0,1), val int)
SET IDENTITY_INSERT #test ON
INSERT INTO #test (id,val) Values(0,100)
SET IDENTITY_INSERT #test OFF
SELECT * FROM #test
id val ----------- ----------- 0 100
スクリプト**がハングする**?のように、それは応答を返さずに "永遠に"実行されますか?もしそうなら、興味深い。そうでない場合は、代わりに*エラーメッセージ*を返す場合は、そのエラーメッセージ(すべてのテキストを含む)を記述する必要があります。 –
ああ良い。 *問題のコードが一度も実行されていないことを明確にする編集。 [mcve]を作成してみてください –
ID列に0を挿入しますか?どうして? – Andrew