SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Ràng buộc KHÔNG ĐẦY ĐỦ trong SQLite

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 KEYCHECK , 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_idPRIMARY 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phương pháp hay nhất để triển khai cơ sở dữ liệu an toàn cho thiết bị Android

  2. Thêm khóa ngoại vào bảng hiện có trong SQLite

  3. Đọc cơ sở dữ liệu từ thư mục nội dung

  4. Logcat cho biết dữ liệu cột không hợp lệ1

  5. Ormlite hoặc sqlite Cái nào tốt cho góc nhìn Android?