我有一個擁有嵌套類別的表。我想避免同級別項目上的重複名稱(即具有相同父級的類別)。我來到這個:可空列的唯一約束
CREATE TABLE `category` (
`category_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category_name` varchar(100) NOT NULL,
`parent_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`category_id`),
UNIQUE KEY `category_name_UNIQUE` (`category_name`,`parent_id`),
KEY `fk_category_category1` (`parent_id`,`category_id`),
CONSTRAINT `fk_category_category1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`category_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci
不幸,category_name_UNIQUE
不強制我的根級類別規則(那些parent_id
是NULL)。有沒有合理的解決方法?
在MySQL中沒有'ON DELETE SET DEFAULT',恐怕:( – 2010-06-08 12:01:30
啊,確實...被解析器識別,但被拒絕:「SET DEFAULT:這個動作被解析器識別,但InnoDB拒絕表定義包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句。「嗯,你可以在觸發器中實現級聯。 – Unreason 2010-06-08 12:30:28
MySQL中的觸發器不允許改變受影響表中的其他行 – 2010-06-10 08:15:29