2012-02-24 35 views
21

Tôi có hai bảng, chủ đềđố, đây là định nghĩa của họ:ràng buộc khoá ngoại không hoạt động

CREATE TABLE "theme" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "nom" VARCHAR NOT NULL); 

CREATE TABLE quiz(

    id    INTEGER PRIMARY KEY, 
    nom   VARCHAR(256) NOT NULL, 
    theme  INTEGER NOT NULL, 
    niveau  INTEGER NOT NULL, 
    pass   INTEGER DEFAULT 1 NOT NULL, 
    jok   INTEGER DEFAULT 1 NOT NULL, 
    etat   INTEGER DEFAULT 0 NOT NULL, 
    FOREIGN KEY (theme) REFERENCES theme(id) 
); 

Trường id (khóa chính) trong bảng chủ đề là a Foreign Key trong bảng kiểm tra quiz. Khi tôi cố gắng chèn một bản ghi trong bảng đố có chứa giá trị 30 ví dụ như khóa ngoài, bản ghi được chèn thành công trong bảng quiz mặc dù không có bản ghi trong bảng chủ đề với id = 30, ý tôi là, wasn 't nghĩa vụ phải can thiệp chèn này kể từ khi tôi đã có một hạn chế khóa ngoại?

+0

Bạn sử dụng phiên bản sqlite nào? – TTT

Trả lời

37

Bạn có chắc chắn foreign key support được bật không?

Giả sử thư viện được biên soạn với ràng buộc khoá ngoại được kích hoạt, nó vẫn phải được cho phép bởi các ứng dụng trong thời gian chạy, sử dụng PRAGMA foreign_keys lệnh. Ví dụ:

sqlite> PRAGMA foreign_keys = ON; 
+3

Bạn cứu tôi, tôi phải bật nó: 'PRAGMA foreign_keys = ON;' – Luca

Các vấn đề liên quan