答:db.Exec("PRAGMA foreign_keys = ON")用于強(qiáng)制執(zhí)行外鍵約束檢查。謝謝@outdead當(dāng)我使用 GORM 更新我的 SQLite 數(shù)據(jù)庫時(shí),不會(huì)強(qiáng)制執(zhí)行外鍵約束。我有這兩個(gè)模型:type Cat struct { ID int Name string Breed string OwnerID int Owner Owner }type Owner struct { ID int Name string Phone string}它正確地創(chuàng)建了一個(gè)外鍵約束,其中owner_id引用id. owners這可以通過.schema cats在 SQLite shell 中運(yùn)行:CREATE TABLE `cats` (`id` integer,`name` text,`breed` text,`owner_id` integer,PRIMARY KEY (`id`),CONSTRAINT `fk_cats_owner` FOREIGN KEY (`owner_id`) REFERENCES `owners`(`id`));我試過PRAGMA foreign_keys = ON;在 SQLite shell 中運(yùn)行命令時(shí)強(qiáng)制執(zhí)行外鍵。如果我嘗試將 an 更新為中不存在的owner_idan ,我會(huì)得到:,這是我想要的行為,但是,GORM 仍然能夠執(zhí)行這些更新而不會(huì)收到此錯(cuò)誤。idownersError: FOREIGN KEY constraint failed
在 GORM SQLite 中強(qiáng)制執(zhí)行外鍵約束
慕尼黑5688855
2022-10-17 16:05:22