在mysql中更改FK,更改父ID值

时间:2014-05-04 11:09:33

标签: mysql sql

我有这个麻烦。

我的区域表

CREATE TABLE IF NOT EXISTS `zone` (
`id_zone` INT unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id_zone`),
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

酒店餐桌

CREATE TABLE IF NOT EXISTS `hotel` (
`id_hotel` INT unsigned NOT NULL AUTO_INCREMENT,
`hotel_zone_id` INT unsigned ,
PRIMARY KEY (`id_hotel`),
INDEX (`hotel_zone_id`)
FOREIGN KEY (hotel_zone_id) REFERENCES zone(`id_zone`) ON UPDATE CASCADE
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

以下是我的ddbb示例。

Zone
id_zone
1
2
3
4
5

酒店餐桌

id_hotel hotel_zone_id
   1           1
   2           1 
   3           2
   4           2
   5           3

所以我想设置区号为1到10的所有酒店。

我的查询是:

UPDATE zone SET id_zone=10 WHERE id_zone=1;

我收到此错误:

  

无法添加或更新子行:外键约束失败

1 个答案:

答案 0 :(得分:0)

由于您将FK声明为ON UPDATE CASCADE,因此这应该有效。引用的记录应自动更新。

但是,根据您的描述,我认为您想要做的事实上就是这样:

UPDATE Hotel SET hotel_zone_id=10 WHERE hotel_zone_id=1;