我有两个表:TABLE_1
和 TABLE_2
。
TABLE_1
包含 ID
和 NAME
,其中 ID
是主键。
TABLE_2
包含 ID
和 DATA
,其中 ID
和 DATA
构成一个复合主键。
我正在寻找一个 SQL 查询,当
TABLE_1
中的ID
发生更改时,该查询可以更新TABLE_2
中的ID
。如何创建这个表结构?
TABLE_1
ID NAME
100 LLL
101 KKK
102 JJJ
TABLE_2
ID DATA
100 HHHHHHH
100 MMMMMMM
100 ZZZZZZZ
101 IIIIIII
101 FFFFFFF
102 EEEEEEE
感谢您的帮助。
最佳答案
不确定为什么需要这样做,但无论如何。
一种方法是使用 foreign key constraints ,在InnoDB存储引擎中可用:
CREATE TABLE `TABLE_1` (
`ID` int NOT NULL,
`NAME` varchar(255) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB;
CREATE TABLE `TABLE_2` (
`ID` int(11) NOT NULL,
`DATA` varchar(255) NOT NULL,
PRIMARY KEY (`ID`,`DATA`),
CONSTRAINT `FK_ID` FOREIGN KEY (`ID`)
REFERENCES `TABLE_1` (`ID`)
ON UPDATE CASCADE
ON DELETE CASCADE
) ENGINE=InnoDB;
上面的表结构会更新所有匹配的ID
来自TABLE_2
每当 ID
在TABLE_1
已修改( ON UPDATE CASCADE
)。另外,每当您删除ID
时来自TABLE_1
,来自 TABLE_2
的所有匹配条目也将被删除 ( ON DELETE CASCADE
)。由于此限制,ID
来自TABLE_2
必须存在于 TABLE_1
对于 INSERT
成功完成。
还要记住,外键会影响性能,但在不确切知道为什么需要这样的东西的情况下,我无法建议任何更好的解决方案。
关于php - 当另一个表中的值发生更改时更新表中列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416827/