SQLite爲什麼不強制執行以下外鍵約束(雖然執行正常)?我該如何去執行這種關係?外鍵沒有被強制執行
CREATE TABLE User (
UserID TEXT Unique NOT NULL PRIMARY KEY,
FirstName TEXT NOT NULL,
LastName TEXT NOT NULL,
Username TEXT NOT NULL,
Password TEXT NOT NULL,
Email TEXT NOT NULL,
SignupDate TEXT NOT NULL
)
CREATE TABLE Category (
CategoryID TEXT Unique NOT NULL PRIMARY KEY,
UserID TEXT,
FOREIGN KEY(UserID) REFERENCES User(UserID)
)
謝謝你這麼多的迅速回應。我從來沒有注意到在文檔中(下次看起來會更困難)。剛剛試圖運行該命令,我收到以下錯誤:「SQLite準備()失敗。錯誤:授權被拒絕細節:未授權EXPRESSION:PRAGMA foreign_keys = ON;」 我假設他們正在使用的版本不支持它或已禁用功能。我可以使用觸發器創建相同的最終結果嗎?如果有的話,請爲SQLITE提供一些示例觸發器語法? – 2010-06-11 04:48:55
@Maxim,我相信sqlite外鍵觸發器需要與普通的舊外鍵完全相同的底層功能(通常在sqlite的嵌入式構建中被刪除,它們希望比他們想要提供的「完全相關的ACID功能」更小且更快實質性能和足跡成本)。 – 2010-06-11 04:54:31