SQL
安全な手順 — 本番を止めずにカラムを足す3ステップ
出典: SQL Server で本番テーブルにカラムを追加する時、業務SEが気をつける3つのこと — 安全な手順 — 本番を止めずにカラムを足す3ステップ
-- ステップ1: まず NULL 許可で追加(メタデータのみ・ロックは一瞬)
ALTER TABLE dbo.受注 ADD 区分 tinyint NULL;
GO
-- ステップ2: デフォルト相当をバッチで段階的に埋める(大テーブルは分割して)
UPDATE TOP (5000) dbo.受注 SET 区分 = 0 WHERE 区分 IS NULL;
-- ↑ 区分 IS NULL が無くなるまで繰り返す(1回5000行ずつなら長時間ロックしない)
-- ステップ3: 全行埋まったら、必要なら NOT NULL 化
ALTER TABLE dbo.受注 ALTER COLUMN 区分 tinyint NOT NULL;
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「安全な手順 — 本番を止めずにカラムを足す3ステップ」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
2 件-- 既存行があるテーブルに NOT NULL + 定数デフォルトを足す CREATE TABLE dbo.受注 (受注ID int PRIMARY KEY, 金額 int); INSERT INTO dbo.受注 VALUES (1, 1000), (2, 2000); GO
▶ 実行可
1. NOT NULL + デフォルト値の組み合わせで挙動が割れる
#d2eedd1ebe08
-- 可変長NULLは即時・既存行のサイズも据え置き(値が入るまで増えない) ALTER TABLE dbo.受注 ADD 備考 varchar(200) NULL; -- computed 列は実体を持たず、読むたびに計算される(PERSISTED 指定時を除く)
▶ 実行可
3. 可変長・固定長・computed 列で挙動とサイズが変わる
#b63061dcf931
