Mysql关系相关行未正确更新
当p_操作员的OPID状态为1时,则会出现问题 n\u通知表1中的所有状态行 我希望它只更新相关的op_id状态Mysql关系相关行未正确更新,mysql,relational-database,Mysql,Relational Database,当p_操作员的OPID状态为1时,则会出现问题 n\u通知表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` (
`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_操作符中的status
链接到n_notify
中的status
,这当然意味着更改p_操作符中的状态会更改n_notify
中的status
的所有值
由于您不希望将状态级联到自身,而是希望按id来级联行的状态,因此不需要约束,只需要触发器
经验法则:
- 如果只需要一个字段,请使用约束
- 如果需要两个或多个字段(标识id、更改状态),请使用触发器
感谢您的合作,尤金。有很多op_id。如果你能举个例子,我很感激。