我有2张桌子
1。父
Parent_ID(PK)| name | status
--------------------------------
1 |parent 1 |enable
2 |parent 2 |enable
3 |parent 3 |disable
2。子
Child_Id(PK)| Parent_ID(Fk of parent table) | name | status
----------------------------------------------------------
1 |1 | child 1 | enable
2 |1 | child 2 | enable
3 |1 | child 3 | enable
4 |1 | child 4 | enable
5 |2 | child 5 | enable
6 |2 | child 6 | enable
7 |2 | child 7 | enable
8 |2 | child 8 | enable
9 |3 | child 9 | disable
10 |3 | child 10 | disable
11 |3 | child 11 | disable
12 |3 | child 12 | disable
现在我想在两个表之间设置关系,这样如果父表中记录的状态发生变化,那么其所有子行的状态也应该发生变化。
我知道我可以使用触发器执行此操作,但我认为应该采用某种方式来处理多列上的关系和FK约束。
答案 0 :(得分:0)
您需要在引用onScroll
和listenScrollEvent() {
console.log('Scroll event detected!');
}
render() {
return (
<table onScroll={this.listenScrollEvent}>
[...]
</table>
)
}
的{{1}}表格中创建复合外键。
这是一个演示:
child
<强>测试强>
现在尝试更新父表中parent_id
的{{1}}字段。
此更改也会触发status
表中所有子条目状态值的更改。
-- ----------------------------
-- Table structure for `parenttable`
-- ----------------------------
DROP TABLE IF EXISTS `parenttable`;
CREATE TABLE `parenttable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`status` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `ID` (`ID`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of parenttable
-- ----------------------------
INSERT INTO `parenttable` VALUES ('1', '1');
INSERT INTO `parenttable` VALUES ('2', '0');
INSERT INTO `parenttable` VALUES ('3', '1');
-- ----------------------------
-- Table structure for `childtable`
-- ----------------------------
DROP TABLE IF EXISTS `childtable`;
CREATE TABLE `childtable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`status` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `fk_childTable_parent_id` (`parent_id`,`status`),
CONSTRAINT `fk_childTable_parent_id` FOREIGN KEY (`parent_id`, `status`) REFERENCES `parenttable` (`ID`, `status`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of childtable
-- ----------------------------
INSERT INTO `childtable` VALUES ('1', '1', '1');
INSERT INTO `childtable` VALUES ('3', '1', '1');
INSERT INTO `childtable` VALUES ('6', '1', '1');
INSERT INTO `childtable` VALUES ('4', '2', '0');
INSERT INTO `childtable` VALUES ('5', '2', '0');
<强>输出:强>
status
同样适用于ID = 1
操作
如果您以后需要添加外键约束:
child