SQLServerでIDENTITYをONにした列にデータをインサートする

SQL Server Management Studioで、レコード数の多いテーブルの列プロパティを変更しようとすると時間切れで変更できないことが多い。
一時的に別のテーブルにデータを移動してレコード数を減らしてから列プロパティを変更しようとした。
しかし、IDENTITY列の値をそのまま保持して戻そうとすると「列リストを使用し、IDENTITY_INSERTをONにしてから実行しろ」というエラーになった。

IDENTITY_INSERT を ONにできるのは1つのテーブルだけらしいので、対象のテーブルに対してIDENTITY_INSERT を ONにしてINSERTしたら、すぐにOFFに戻したほうがいいようだ。


SET IDENTITY_INSERT [テーブル名] ON
GO

INSERT INTO [テーブル名] (
ID, CRDTM, SHCDR, UPDTM
)
SELECT
ID, CRDTM, SHCDR, UPDTM
FROM [データ取得元テーブル名]
WHERE (CRDTM < CONVERT(DATETIME, '2012-08-16 00:00:00', 102))
GO

SET IDENTITY_INSERT [テーブル名] OFF

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

ナイス

この記事へのコメント

この記事へのトラックバック