gpt4 book ai didi

Mysql 关系相关行未正确更新

转载 作者:行者123 更新时间:2023-11-29 14:32:12 25 4
gpt4 key购买 nike

当 p_operators 中的 OPID 之一的状态为 1 时,就会出现问题n_notify 表所有状态行 udating 1我希望它只更新相关的 op_id 状态...

`p_operators` (
`opID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`opID`),
KEY `status` (`status`)
) ENGINE=InnoDB;

`n_notify` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`op_id` int(10) unsigned NOT NULL,
`email` varchar(155) NOT NULL,
`status` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `status` (`status`),
KEY `op_id` (`op_id`)
) ENGINE=InnoDB ;

ALTER TABLE `n_notify`
ADD CONSTRAINT `n_notify_ibfk_2` FOREIGN KEY (`op_id`) REFERENCES `p_operators` (`opID`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `n_notify_ibfk_1` FOREIGN KEY (`status`) REFERENCES `p_operators` (`status`) ON DELETE CASCADE ON UPDATE CASCADE;


p_operators values
opID status
5 0
13 1

n_notify values
id op_id email status
2 13 XX 1
3 5 XX 1

最佳答案

您的第二个约束将 p_operators 中的 status 链接到 n_notify 中的 status,这当然意味着,更改p_operators 中的状态会更改 n_notify所有 相同的 status 值。

由于您不想级联状态本身,而是通过 id 级联行的状态,因此您不需要约束,而是需要触发器。

经验法则:

  • 如果您只需要一个字段,请使用约束
  • 如果您需要两个或更多字段(要识别的 ID、要更改的状态),请使用触发器

关于Mysql 关系相关行未正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com