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

Cách Bật / Tắt các Ràng buộc KIỂM TRA trong SQLite

Nếu bạn cần bật hoặc tắt tất cả CHECK ràng buộc trong SQLite, bạn có thể sử dụng ignore_check_constraints Tuyên bố PRAGMA.

Tuyên bố pragma này cho phép hoặc vô hiệu hóa việc thực thi CHECK một cách rõ ràng hạn chế. Cài đặt mặc định bị tắt, có nghĩa là CHECK các ràng buộc được thực thi theo mặc định.

Cú pháp

Cú pháp như sau:

PRAGMA ignore_check_constraints = boolean;

Ở đâu boolean là một giá trị boolean.

  • Để tắt CHECK các ràng buộc, đây có thể là bất kỳ điều nào sau đây:
    • false
    • no
    • off
    • 0
  • Để bật CHECK các ràng buộc, đây có thể là bất kỳ điều nào sau đây:
    • true
    • yes
    • on
    • 1

Ví dụ

Đầu tiên, hãy tạo một bảng với CHECK ràng buộc:

CREATE TABLE Products( 
    ProductId INTEGER PRIMARY KEY, 
    ProductName, 
    Price 
    CHECK (Price > 0)
);

Bây giờ chúng ta có thể chuyển đổi CHECK bật hoặc tắt các ràng buộc theo yêu cầu để thực thi hoặc không thực thi ràng buộc đó.

Bật Ràng buộc KIỂM TRA

Dưới đây là ví dụ về việc bật tất cả CHECK ràng buộc:

PRAGMA ignore_check_constraints = 0;

Như đã đề cập, đây là giá trị mặc định. Vì vậy, nếu bạn không sử dụng câu lệnh PRAGMA này CHECK các ràng buộc sẽ được đặt thành giá trị này.

Bây giờ hãy kiểm tra CHECK đó Trên thực tế, các ràng buộc được kích hoạt bằng cách cố gắng chèn dữ liệu vi phạm CHECK đó ràng buộc:

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

Kết quả:

Error: CHECK constraint failed: Products

Vì vậy, CHECK ràng buộc đã được thực thi như mong đợi.

Tắt các ràng buộc KIỂM TRA

Dưới đây là một ví dụ về cách tắt tất cả CHECK ràng buộc:

PRAGMA ignore_check_constraints = 1;

Bây giờ chúng ta hãy thử chèn lại cùng một dữ liệu và chọn kết quả:

INSERT INTO Products VALUES 
    (NULL, 'Blue Widget', 0.00);

SELECT * FROM Products;

Kết quả:

ProductId   ProductName  Price     
----------  -----------  ----------
1           Blue Widget  0.0       

Như mong đợi, dữ liệu được quản lý để vào cơ sở dữ liệu, ngay cả khi nó vi phạm CHECK ràng buộc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlLiteDatabase.query () cho INNER JOIN

  2. Chọn SQLite

  3. <expr> được mong đợi, có '?'

  4. Android:Chèn hàng loạt, khi InsertHelper không được dùng nữa

  5. Hàm tổng hợp trong SQLite