当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
答案 0 :(得分:1)
您的第二个约束将status
中的p_operators
与status
中的n_notify
联系起来,这意味着更改p_operators
中的状态会更改所有 status
中n_notify
的值相等。
由于您不希望级联状态本身,而是按行ID状态,您不需要约束,只需要触发器。
经验法则: