我有这个麻烦。
我的区域表
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;
我收到此错误:
无法添加或更新子行:外键约束失败
答案 0 :(得分:0)
由于您将FK声明为ON UPDATE CASCADE
,因此这应该有效。引用的记录应自动更新。
但是,根据您的描述,我认为您想要做的事实上就是这样:
UPDATE Hotel SET hotel_zone_id=10 WHERE hotel_zone_id=1;