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.