我似乎无法让我的级联行动在这里。我有两个表定义如下。
谁能告诉我什么是错的?对system_rigs“id”的更新不会级联到消息表。
CREATE TABLE `edr_messages` (
`message_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rig_id` int(10) unsigned NOT NULL,
`message` text,
PRIMARY KEY (`message_id`,`rig_id`),
KEY `pkey` (`message_id`),
KEY `rig_id` (`rig_id`),
CONSTRAINT `edr_messages_ibfk_1` FOREIGN KEY (`rig_id`)
REFERENCES `system_rigs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1$$
CREATE TABLE `system_rigs` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1$$
答案 0 :(得分:0)
我刚尝试了这个,它对我来说很好(mysql 5.1.41)。也许我们不清楚应该发生什么,所以让我告诉你我尝试了什么......我运行了你的create table
条款(反向顺序)。然后我运行了以下测试:
insert into system_rigs (name) values('computron');
<强> system_rigs 强>
id:13
名称:computron
insert into edr_messages (rig_id, message) values (13, 'here\'s a message');
<强> edr_messages 强>
id:2
rig_id:13
消息:这是一条消息
update system_rigs set id = 26 where id = 13;
<强> system_rigs 强>
id:26
名称:computron<强> edr_messages 强>
id:2
rig_id:26
消息:这是一条消息