値の有無と範囲を別々に検査する
NOT NULLは、その列に必ず値が入っていることを求めます。CHECKは条件が真または不明になる行を受け入れるため、CHECK (price >= 0)は負の値を拒否してもNULLを許容します。必須で0以上の価格には、NOT NULLとCHECKの両方が必要です。
qtyがNULLのとき、CHECK (qty > 0)はどうなりますか?
NOT NULLは、その列に必ず値が入っていることを求めます。CHECKは条件が真または不明になる行を受け入れるため、CHECK (price >= 0)は負の値を拒否してもNULLを許容します。必須で0以上の価格には、NOT NULLとCHECKの両方が必要です。
qtyがNULLのとき、CHECK (qty > 0)はどうなりますか?