外键不会在MySQL中级联

时间:2010-09-19 20:20:43

标签: mysql foreign-keys

我似乎无法让我的级联行动在这里。我有两个表定义如下。

谁能告诉我什么是错的?对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$$ 

Rigs Table

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$$  

1 个答案:

答案 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
  消息:这是一条消息