web-dev-qa-db-ja.com

NULL値を含む列に非NULL制約を追加する方法

いくつかのnull値を含む列を持つテーブルがあります。既存のnullをnull以外の値に更新せずに、その列にNOT NULL制約を追加したい。既存のヌル値を保持し、この列に非ヌル値が含まれている将来の行を確認したい。これは可能ですか?どうやって?

20
Rachcha

未検証の制約を追加できます。既存の行は表示されませんが、新しい行または更新された行はチェックされます。

ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;

制約を満たさない限り、既存の行を更新できないことに注意してください。

また、オプティマイザーはこの制約を利用して計画を立てることができないという欠点を認識してください。一部の行にはまだnullがあると想定する必要があります。

49
Jeffrey Kemp