前回 テーブル検索 一覧でSQL SELECT文を紹介しました。
https://ameblo.jp/javwo/entry-12591313696.html
今回はテーブルにレコードにデータを追加する方法です。
SELECTのときに使ったtable1テーブルを使います。
select * from table1
このテーブルの[name]に「跡美しゅり」を追記します。[id]フィールドはIDENTITY(1,1)自動連番なので[name]フィールドのみに追記すればOKです。
insert into table1 ([name]) values('跡美しゅり');
上記のようなSQL文になります。条件によってはフィールド名を省略することも可能です。
insert into table1 values('跡美しゅり');
[id] = 6, [name] = '跡美しゅり'が追加されました。
このtable1の場合[name]がnot null設定がありません。従って下記のように書くことも可能です。
insert into table1 values(NULL);
[id]=7,[name]=NULLが追加されました。
ということであれば IDENTITY(1,1) NOT NULL,フィールド1つだけ入ったテーブルを作成するとInsertはどのようになるのでしょうか
CREATE TABLE [table2]( [id] [int] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC) )
上記のようなテーブルを作成しました。
このtable2にInsert文を作ると下記のようなエラーがでます。
insert into table2 values(1)
メッセージ 8101、レベル 16、状態 1、行 1
列リストが使用されていて、IDENTITY_INSERT が ON のときに限り、テーブル 'table2' の ID 列に明示的な値を指定できます。
メッセージにかかれているようにIDENTITY_INSERTをONにする必要があるようです。
SET IDENTITY_INSERT [table2] ON insert into [table2]([id]) values (1) SET IDENTITY_INSERT table2 OFF
上記のSQLのようにIDENTITY_INSERTをONにすると追記できました。