Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite NOT NULL
ràng buộc để đảm bảo các giá trị trong một cột không phải là NULL
.
Giới thiệu về SQLite NOT NULL
ràng buộc
Khi bạn tạo một bảng, bạn có thể chỉ định xem một cột có chấp nhận NULL
hay không giá trị hay không. Theo mặc định, tất cả các cột trong bảng đều chấp nhận NULL
các giá trị ngoại trừ bạn sử dụng rõ ràng NOT NULL
ràng buộc.
Để xác định một NOT NULL
ràng buộc cho một cột, bạn sử dụng cú pháp sau:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
Không giống như các ràng buộc khác như PRIMARY KEY
và CHECK
, bạn chỉ có thể xác định NOT NULL
các ràng buộc ở cấp cột, không phải cấp bảng.
Dựa trên tiêu chuẩn SQL, PRIMARY KEY
phải luôn ngụ ý NOT NULL
. Tuy nhiên, SQLite cho phép NULL
các giá trị trong PRIMARY KEY
ngoại trừ một cột là INTEGER PRIMARY KEY
hoặc bảng là một WITHOUT ROWID
bảng hoặc cột được xác định là NOT NULL
cột.
Điều này là do lỗi trong một số phiên bản đầu tiên. Nếu lỗi này được sửa để phù hợp với tiêu chuẩn SQL, thì nó có thể phá vỡ các hệ thống kế thừa. Do đó, nó đã được quyết định cho phép NULL
các giá trị trong PRIMARY KEY
cột.
Một lần NOT NULL
ràng buộc được gắn vào một cột, bất kỳ nỗ lực nào để đặt giá trị cột thành NULL
chẳng hạn như chèn hoặc cập nhật sẽ gây ra vi phạm ràng buộc.
SQLite NOT NULL
ví dụ ràng buộc
Ví dụ sau tạo một bảng mới có tên suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Trong ví dụ này, supplier_id
là PRIMARY KEY
cột của suppliers
bàn. Vì cột này được khai báo là INTEGER PRIMARY KEY
, nó sẽ không chấp nhận NULL
giá trị.
name
cột cũng được khai báo bằng NOT NULL
ràng buộc, vì vậy nó sẽ chỉ chấp nhận các giá trị không phải NULL.
Câu lệnh sau cố gắng chèn một NULL
thành name
cột của suppliers
bảng:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Câu lệnh không thành công do NOT NULL
vi phạm ràng buộc. Đây là thông báo lỗi:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite NOT NULL
ràng buộc để đảm bảo các giá trị trong một cột không phải là NULL.