HIRO's.NET Blog

PowerShellが好き

目次

Blog 利用状況

ニュース

あわせて読みたい

書庫

日記カテゴリ

リンク

テーブルにIDENTITYの指定がされた列があってもINSERTする(SQL Server 2005)

テーブルにIDENTITYの指定がされた列があるかを調べる (SQL Server 2005) の続きです。

 

で、テーブルにIDENTITY列があっても、INSERT文を実行したい場合はどうすればよいか

INSERT文の前に

SET IDENTITY_INSERT テーブル名 ON

INSERT文のあとに

SET IDENTITY_INSERT テーブル名 OFF

をすれば良いらしい。

 

C#で以下のようにしたら(かなり省略して書いてます)、通りました。

strSQL = "SET IDENTITY_INSERT EMP_TBL ON";
strSQL += "INSERT EMP_TBL ~省略~";
strSQL = "SET IDENTITY_INSERT EMP_TBL OFF";

SqlCommand command = new SqlCommand(strSQL, connection);

 

もっと勉強しないと...


投稿日時 : 2008年1月8日 23:14

コメントを追加

# re: テーブルにIDENTITYの指定がされた列があってもINSERTする(SQL Server 2005) 2008/01/08 23:28 いしだ

SQL Serverの場合、普通はIDENTITY列を指定しないでINSERTしますが、この方法は、IDENTITY列に空き番が出来たとき等に有効って事でしょうか?
今度、試してみたいと思います。
使える場面がありそうです。

# re: テーブルにIDENTITYの指定がされた列があってもINSERTする(SQL Server 2005) 2008/01/08 23:28 中博俊

というか、そうじゃなくってIDENTITYをいかすべきなんじゃないの?
どうしてもそのまま登録したいってのなら別だけど

# re: テーブルにIDENTITYの指定がされた列があってもINSERTする(SQL Server 2005) 2008/01/08 23:34 HIRO

>中さん
まさにその通りなんですが、XMLファイルからデータを取得して、IDENTITY列を含むテーブルにそのまま書き込みたかったんです。

一番良いのは、やはりIDENTITYを生かすことなんでしょうね

# re: テーブルにIDENTITYの指定がされた列があってもINSERTする(SQL Server 2005) 2008/01/08 23:36 HIRO

>いしださん

そういう場合には有効かもしれませんね。
ただ、中さんもおっしゃっているように、IDENTITYは生かすべきかと思います。
ケースバイケースってことで..

タイトル
名前
URL
コメント