0
我有兩個表代表興趣和產品。我正在實施他們之間的many_many關係。當我創建表格時,我忽略了創建表格約束以確保刪除任何產品或興趣記錄時,分配表格的記錄被刪除。表創建後添加表引用約束MySQL
興趣表
CREATE TABLE IF NOT EXISTS `interests` (
`id` int(11) NOT NULL auto_increment,
`interest` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
產品表
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL auto_increment,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=65 ;
分配表
CREATE TABLE IF NOT EXISTS `interest_product_assignment` (
`id` int(11) NOT NULL auto_increment,
`interest_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `product` (`product_id`),
KEY `interest` (`interest_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
我試圖添加此約束出現失敗 -
ALTER TABLE `interest_product_assignment` ADD CONSTRAINT `product` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
ALTER TABLE `interest_product_assignment` ADD CONSTRAINT `interest` FOREIGN KEY (`interest_id`) REFERENCES `interest` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT;
當我刪除產品記錄時,相應的賦值記錄不會被刪除。
這方面的一些問題:
- 這是正確的語法爲這種約束?
- 重要的是,我沒有添加這些約束創建 表或我已經在表中的數據?
- 在PHPMyADMIN中,我可以看到我的約束是否已成功添加?我似乎無法找到任何地方的引用,促使我認爲PHPMyADMIN忽略了我的約束,而不會引發錯誤消息。
謝謝,這工作了魅力。 – goose