SQLSERVERでのカラム追加

テーブルに列(以降カラム)を任意の場所に追加したい場合、

MySQLのようにAfter句が使えないため一時テーブルを使う。

-- トランザクション開始
begin transaction;

-- 一時テーブルに回避
SELECT * INTO #temp FROM [対象テーブル名]
 
-- 対象テーブルを削除
DROP TABLE [対象テーブル名]
 
-- カラムを追加した対象テーブルを再作成
CREATE TABLE [対象テーブル名]
(
  ...
); 

-- インデックスもあれば忘れずに
CREATE NONCLUSTERED INDEX [インデックス名] ON [対象テーブル名]
(
  ...
);

-- IDENTITY型を使っていれば
SET IDENTITY_INSERT [対象テーブル名] ON;

-- 一時テーブルから復帰
INSERT INTO [対象テーブル名]
(
  ... -- IDENTITY型を使ってる場合は列必須
)
SELECT
  ...
FROM #temp;

-- IDENTITY型を使っていれば
SET IDENTITY_INSERT [対象テーブル名] OFF;
 
-- 一時テーブルを削除
DROP TABLE #temp;

エラーが出なければ

-- コミット
COMMIT;

エラーが出た場合

-- ロールバック
ROLLBACK;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です