SQL
1. NOT NULL + デフォルト値の組み合わせで挙動が割れる
出典: SQL Server で本番テーブルにカラムを追加する時、業務SEが気をつける3つのこと — 1. NOT NULL + デフォルト値の組み合わせで挙動が割れる
-- 既存行があるテーブルに NOT NULL + 定数デフォルトを足す
CREATE TABLE dbo.受注 (受注ID int PRIMARY KEY, 金額 int);
INSERT INTO dbo.受注 VALUES (1, 1000), (2, 2000);
GO
-- 条件が揃えば、定数デフォルト付き NOT NULL はメタのみで即完了(エディション等に依存・後述)
ALTER TABLE dbo.受注 ADD 状態 tinyint NOT NULL DEFAULT 0;
GO
SELECT 受注ID, 状態 FROM dbo.受注; -- 既存行にも 0 が入って見える
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「1. NOT NULL + デフォルト値の組み合わせで挙動が割れる」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
2 件-- 可変長NULLは即時・既存行のサイズも据え置き(値が入るまで増えない) ALTER TABLE dbo.受注 ADD 備考 varchar(200) NULL; -- computed 列は実体を持たず、読むたびに計算される(PERSISTED 指定時を除く)
▶ 実行可
3. 可変長・固定長・computed 列で挙動とサイズが変わる
#b63061dcf931
-- ステップ1: まず NULL 許可で追加(メタデータのみ・ロックは一瞬) ALTER TABLE dbo.受注 ADD 区分 tinyint NULL; GO未収録
安全な手順 — 本番を止めずにカラムを足す3ステップ
#1a85261c6347
