テーブル作成時にNOT NULL制約を設定する

テーブル作成時にNOT NULL制約を設定する方法は複数ありますが、
この記事では一番シンプルだと思う方法を記載します!

NOT NULL制約とは

制約の1つです。
データベースにおける「制約」とは「入力チェック」のことです。

NOT NULL制約を設定することで、NULLの登録を防止できます。

登録しようしている列の値がNULLかどうかをチェックし、NULLの場合はチェックエラーとし登録を防ぎます。

NOT NULL制約を設定した列には、必ず値を設定しなければなりません。
裏を返せば、NOT NULL制約が設定された列には、必ず値が設定されています。
(NULL以外が設定されています)

よってアプリ等でデータを取得する際は、NULLチェックは不要です。

またアプリが取得したデータがNULLであったことによるエラーを防止することが
できます。
→「NULL未考慮のためエラー発生」はよく起こります。

ただNOT NULL制約では「”(空文字)」を設定することは可能です。
よってアプリ等でデータを取得する際は、空文字チェックは必要です。

NOT NULL制約を設定する

CREATE TABLEの中で、主キーとしたい列の右側に「NOT NULL」と記載します。

CREATE TABLE employee(
	id      CHAR(5)      ,
	name    VARCHAR(12)  NOT NULL,
	sex     CHAR(2),
	section VARCHAR(12)
)

NOT NULL制約が設定されたことを確認する

NOT NULL制約を設定した列「NAME」の値が未設定(=NULL)のINSERT文の実行を試みると、
異常終了します。

--実行するSQL ※列「NAME」が未設定(=NULL)
INSERT employee (id, name, sex, section) VALUES ('00001', NULL, '男', '営業課')

●エラーメッセージ
テーブル ‘sampleDB.dbo.EMPLOYEE’ の列 ‘NAME’ に値 NULL を挿入できません。この列では NULL 値が許可されていません。
INSERT は失敗します。


テーブルを確認してみると、何も登録されていることが分かります。

SELECT * FROM employee

 

設定したい列の右側に「NOT NULL」と記載する方法が、
一番シンプルで良いと思います!

タイトルとURLをコピーしました