Dondariadmin (トーク | 投稿記録) (ページの作成: == 自動連番採用機能 == *あるカラムに値をセットしなくても自動的に連続した数値がセットされる機能は大抵のDBMSが持っています...) |
Dondariadmin (トーク | 投稿記録) |
||
11行目: | 11行目: | ||
=== IDENTITYプロパティを設定した列(以下ID列)を持つテーブルを作成 === | === IDENTITYプロパティを設定した列(以下ID列)を持つテーブルを作成 === | ||
− | CREATE TABLE hoge_table ( | + | CREATE TABLE hoge_table ( |
− | + | id int NOT NULL IDENTITY (1, 1), | |
− | + | onamae varchar(40) NULL | |
− | );< | + | ); |
− | + | <span style="color:blue">コマンドは正常に完了しました。</span> | |
− | + | ||
=== ID列に値を指定してINSERTを実行 === | === ID列に値を指定してINSERTを実行 === | ||
− | INSERT INTO hoge_table values (1000, 'akiko'); | + | INSERT INTO hoge_table values (1000, 'akiko'); |
− | + | <span style="color:red">メッセージ 8101、レベル 16、状態 1、行 1<br />列リストが使用されていて、IDENTITY_INSERT が ON のときに限り、テーブル 'hoge_table' の ID 列に明示的な値を指定できます。</span> | |
− | + | ||
− | + | ||
− | + | ||
=== ID列に値を指定してINSERTを実行 === | === ID列に値を指定してINSERTを実行 === | ||
− | * | + | *列リストが指定されていないことがエラー原因の一つのようなので、列リストを明示してみる。 |
− | INSERT INTO hoge_table (id, onamae) values (1000, 'akiko'); | + | INSERT INTO hoge_table (id, onamae) values (1000, 'akiko'); |
− | + | <span style="color:red">メッセージ 544、レベル 16、状態 1、行 1};<br />IDENTITY_INSERT が OFF に設定されているときは、テーブル 'hoge_table' の ID 列に明示的な値を挿入できません。</span> | |
− | + | ||
− | + | ||
− | + | ||
=== IDENTITY_INSERTプロパティをセットしてINSERT === | === IDENTITY_INSERTプロパティをセットしてINSERT === | ||
− | + | SET IDENTITY_INSERT hoge_table ON | |
− | SET IDENTITY_INSERT hoge_table ON | + | INSERT INTO hoge_table (id, onamae) values (1000, 'akiko'); |
− | INSERT INTO hoge_table (id, onamae) values (1000, 'akiko'); | + | <span style="color:blue">(1 行処理されました)</span> |
− | + | ||
− | + | ||
− | + | ||
=== データを確認 === | === データを確認 === | ||
*ID列に指定値がセットされていることを確認。 | *ID列に指定値がセットされていることを確認。 | ||
− | select * from hoge_table< | + | select * from hoge_table |
− | + | <span style="color:blue">id onamae</span> | |
− | + | <span style="color:blue">----------- ----------------------------------------</span> | |
− | + | <span style="color:blue">1000 akiko</span> | |
− | + | <span style="color:blue">(1 行処理されました)</span> | |
− | + | ||
=== ID列に値を指定せずにINSERT === | === ID列に値を指定せずにINSERT === | ||
− | + | SET IDENTITY_INSERT hoge_table OFF | |
− | SET IDENTITY_INSERT hoge_table OFF | + | INSERT INTO hoge_table (onamae) values ('akiko'); |
− | INSERT INTO hoge_table (onamae) values ('akiko'); | + | <span style="color:blue">(1 行処理されました)</span> |
− | + | ||
− | + | ||
− | + | ||
=== データ確認 === | === データ確認 === | ||
*直前のID列の値“1000”に続く“1001”が採用されることを確認。 | *直前のID列の値“1000”に続く“1001”が採用されることを確認。 | ||
− | select * from hoge_table< | + | select * from hoge_table |
− | + | <span style="color:blue">id onamae</span> | |
− | + | <span style="color:blue">----------- ----------------------------------------</span> | |
− | + | <span style="color:blue">1000 akiko</span> | |
− | + | <span style="color:blue">1001 akiko</span> | |
− | + | <span style="color:blue">(2 行処理されました)</span> | |
− | + |
CREATE TABLE hoge_table (
id int NOT NULL IDENTITY (1, 1),
onamae varchar(40) NULL
);
コマンドは正常に完了しました。
INSERT INTO hoge_table values (1000, 'akiko');
メッセージ 8101、レベル 16、状態 1、行 1
列リストが使用されていて、IDENTITY_INSERT が ON のときに限り、テーブル 'hoge_table' の ID 列に明示的な値を指定できます。
INSERT INTO hoge_table (id, onamae) values (1000, 'akiko');
メッセージ 544、レベル 16、状態 1、行 1};
IDENTITY_INSERT が OFF に設定されているときは、テーブル 'hoge_table' の ID 列に明示的な値を挿入できません。
SET IDENTITY_INSERT hoge_table ON
INSERT INTO hoge_table (id, onamae) values (1000, 'akiko');
(1 行処理されました)
select * from hoge_table id onamae ----------- ---------------------------------------- 1000 akiko (1 行処理されました)
SET IDENTITY_INSERT hoge_table OFF
INSERT INTO hoge_table (onamae) values ('akiko');
(1 行処理されました)
select * from hoge_table id onamae ----------- ---------------------------------------- 1000 akiko 1001 akiko (2 行処理されました)Tweet