我有一個包含2個條目的表。有關在MySQL中插入外鍵約束的建議
喜歡的東西
CREATE TABLE `db`.`main` (
`id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
id爲這2項自動生成的主密鑰。
我有另一個表與鏈接
CREATE TABLE `db`.`day` (
`main_id` int(10) unsigned NOT NULL,
`day` tinyint(4) NOT NULL,
CONSTRAINT `fk_db_main` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
的規則,現在我可以成功地得到使用
SELECT * FROM main where id='9';
結果,但是當我嘗試運行
INSERT INTO day (main_id, day) VALUES (9, 0);
我得到
「無法添加或更新子行:外鍵約束失敗(db
。 day
,約束fk_db_main
外鍵(main_id
)參考文獻main
(id
)ON DELETE NO ACTION ON UPDATE NO ACTION)(1452)」
什麼我與插入缺失有什麼建議?
**我hadn在提問的時候沒有列出問題的實際原因,實際的原因是主數據庫表在MyISAM中,InnoDB表無法創建連接到它的外鍵。簡而言之,MyISAM不支持外鍵,即使它們來自其他表格。
插入語句看起來不錯。 – 2009-05-30 02:51:33
我很困惑,你認爲'主'表中有兩個'條目'。以我的想法,有一列 - 稱爲ID - 它也是表的主鍵。 – 2009-05-30 02:58:53
另外,爲什麼你在SELECT中引用'9'?當你運行SELECT時會得到什麼結果? – 2009-05-30 03:00:04