シナリオ:
要件の1つに顧客テーブルを作成しているので、名の列に常に値があることを確認する必要があります。名の列に常に値があることをどのように確認しますか?
解決策:
制約は、列に挿入するデータがルールに従うことを確認するルールを定義します。上記の要件では、列にNot Null制約を作成できます。NotNullConstraintは、その列に挿入される値がNullでないことを確認します。ユーザーが非ヌル制約を作成した列の値を指定せずに行を挿入しようとすると、列がヌル値を受け入れることができないため、挿入は失敗します。
非ヌル制約を作成するにはテーブルの列では、以下に示すように、名の列のデータ型の後にNotNullを追加する必要があります。
Create Table Customer (FirstName VARCHAR(50) Not Null, LastName VARCHAR(50), Age SmallInt, PhoneNumber CHAR(9), DOB Date, Gender CHAR(1) )他の列に非ヌル制約を指定しなかったことがわかります。つまり、それらの列はヌル値または不明な値を受け入れることができます。
行の下に挿入して、何が起こるかを見てみましょう。
insert into dbo.Customer ( FirstName,LastName,Age,PhoneNumber,DOB,Gender) Values ('Aamir','Shahzad',Null,Null,Null,Null) ,(Null,'Raza',33,'00000000',Null,'M')[名]列にNullを挿入できないためにトランザクションが失敗したことがわかるように、レコードは挿入されません。
SQLServerの列に非ヌル制約を作成する方法-TSQLチュートリアル
2番目の挿入について考えてみましょう、[名]列に何も挿入していない場合。それでも挿入は失敗します。挿入リストに列を指定しない場合、その列にNull値を挿入しようとし、[名]列に非NULL制約を作成しました。
insert into dbo.Customer (LastName,Age,PhoneNumber,DOB,Gender) Values ('Raza',33,'00000000','2016-01-26','M')SQLServerで非NULL制約を作成する方法-SQLServer/TSQLチュートリアル