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.