同僚がSQL Serverに自動インクリメント列のみのテーブルを持っている場合、そのテーブルに新しい行を挿入する方法はありますか?自動インクリメント列のみのテーブルがある場合は、どのように挿入するのですか?
INSERT INTO MyTable() VALUES()
...は機能しません。
理由は...わかりません。しかし、私は魅力的な質問をしました。
同僚がSQL Serverに自動インクリメント列のみのテーブルを持っている場合、そのテーブルに新しい行を挿入する方法はありますか?自動インクリメント列のみのテーブルがある場合は、どのように挿入するのですか?
INSERT INTO MyTable() VALUES()
...は機能しません。
理由は...わかりません。しかし、私は魅力的な質問をしました。
insert into mytable default values
どうやらこの作品:
INSERT INTO MyTable DEFAULT VALUES
(私は質問を依頼ヒットした後だけで申し訳ありませんが、それを発見しました。!)
set identity_insert MyTable ON
insert MyTable(MyIdentColumn) values(42)
set identity_insert MyTable OFF
興味深いアプローチ。 42をMAX(id)+ 1のような次の自動インクリメント値を計算するものに置き換えると、よりうまくいくかもしれません。 –
max + 1を計算すると、明示的な値をID列に挿入する目的を無効にします。例として、42がそこにありました - あなたがそこに挿入しようとしていたどんな値でも差し込みます。あなたが最大値を望んでいれば、あなたは私の例を全く使わないでしょう。 –
IDENTITY_INSERTの設定を使用します。 INSERT ON
SET IDENTITY_INSERT MyTableというINTO MyTable(AutoIncrementColumnName、OtherColumnNames ...) VALUES(9999、OtherData ...) SET IDENTITY_INSERT MyTable OFF
キーに値が入力されていないことを確認してください。
使用のデフォルト値は、デフォルト
create table #test (id int identity, Somedate datetime default getdate())
insert #test default values
select * from #test
ID Somedate
1 2009-06-30 16でも動作します:04:03.307
参照の質問[構文に挿入するための値のないテーブル?](http://stackoverflow.com/q/2148091/905686) – user905686