前回 テーブル検索 一覧で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_INSERTONにする必要があるようです。

SET IDENTITY_INSERT [table2] ON
insert into [table2]([id]) values (1)
SET IDENTITY_INSERT table2 OFF

上記のSQLのようにIDENTITY_INSERTONにすると追記できました。