- NOTNULL列のデータの制限を理解する
- 既存の列データの無効化
- 列のデータ構造を変更する
- 変更されたNullabilityを確認する
SQLServerの列のデータ構造をNULLから変更する NOT NULLへ 、それによってその列のnull以外の値を禁止することは、通常、比較的単純な ALTER TABLEを使用して実行されます。 問題の列を適切に変更するための構文。
このチュートリアルでは、既存を変更する際に必要な重要な安全上の注意事項を確認します。 ALTERを実際に発行する前の列のデータ テーブル自体に害を及ぼす可能性のあるコマンド。
NOTNULL列のデータの制限を理解する
テーブルに変更を加える前に、 NOT NULL に変更する既存の列内で指定できる(および指定できない)データを簡単に確認することが重要です。 、行に NULLを含めることができないようにする その列の値。
最も重要なのは、既存のすべての NULL 列内の値は必須 ALTERの前にnull以外の値に更新されます コマンドを正常に使用でき、列が NOT NULLになります 。列をNOTNULLに設定しようとする試み 実際のNULL 列にデータが残っているとエラーが発生し、変更は発生しません。
NULLがないことを確認するには 列の値には、基本的な UPDATEを使用します コマンド。値が現在NULLである行に明示的に適用できます。 。たとえば、 clientの基本的なテーブルがあります nameのデータ 、 email 、および phone 。現在、いくつかのレコードには NULLがあります 電話コード> 許可したくない値:
clientsID name email phone
1 Neville Estes Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 1-325-847-4838
したがって、すべての phoneにデフォルト値を挿入できます。 現在NULLである値 次のステートメントで:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
今、私たちの NULL 値はすべて、 defaultと見なされる値に置き換えられました 、 0-000-000-0000 :
clientsID name email phone
1 Neville Estes Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net 0-000-000-0000
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net 0-000-000-0000
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org 0-000-000-0000
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 1-325-847-4838
NULLがなくなったので 値がなくなったら、 ALTERを発行できます 今後のすべての追加でNULLが許可されないように、列を更新するステートメント 値。 phoneを変更しているので この例の列では、ステートメントは次のようになります。
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
列に変更を加えたら、列で NULLが許可されていないことを確認することをお勧めします。 単純なINSERTを実行することによる値 テストして、 NULLを使用して新しいレコードを挿入しようとしています 変更された列の値:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', 'jdoe@domain.com', NULL);
すべてが計画どおりに進んだ場合、SQLServerは列がNULLを許可しないことを示すエラーを発行します 値:
Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]