2009-06-30 2 views
8

同僚がSQL Serverに自動インクリメント列のみのテーブルを持っている場合、そのテーブルに新しい行を挿入する方法はありますか?自動インクリメント列のみのテーブルがある場合は、どのように挿入するのですか?

INSERT INTO MyTable() VALUES() 

...は機能しません。

理由は...わかりません。しかし、私は魅力的な質問をしました。

+0

参照の質問[構文に挿入するための値のないテーブル?](http://stackoverflow.com/q/2148091/905686) – user905686

答えて

19
insert into mytable default values 
2

どうやらこの作品:

INSERT INTO MyTable DEFAULT VALUES 

(私は質問を依頼ヒットした後だけで申し訳ありませんが、それを発見しました。!)

0
set identity_insert MyTable ON 

insert MyTable(MyIdentColumn) values(42) 

set identity_insert MyTable OFF 
+0

興味深いアプローチ。 42をMAX(id)+ 1のような次の自動インクリメント値を計算するものに置き換えると、よりうまくいくかもしれません。 –

+0

max + 1を計算すると、明示的な値をID列に挿入する目的を無効にします。例として、42がそこにありました - あなたがそこに挿入しようとしていたどんな値でも差し込みます。あなたが最大値を望んでいれば、あなたは私の例を全く使わないでしょう。 –

0

IDENTITY_INSERTの設定を使用します。 INSERT ON

SET IDENTITY_INSERT MyTableというINTO MyTable(AutoIncrementColumnName、OtherColumnNames ...) VALUES(9999、OtherData ...) SET IDENTITY_INSERT MyTable OFF

キーに値が入力されていないことを確認してください。

2

使用のデフォルト値は、デフォルト

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

関連する問題