[英]Update column values in table based on changes on another column same table sql and php
[英]Update values of a column in a table when a value from another table changes
我有两个表TABLE_1
和TABLE_2
。
TABLE_1
包含ID
和NAME
,其中ID
是主键。
TABLE_2
包含ID
和DATA
,其中ID
和DATA
构成复合主键。
我正在寻找一个SQL查询,当TABLE_1
的ID
TABLE_2
时,该查询将更新TABLE_2
的ID
。
如何创建此表结构?
表格1
ID NAME
100 LLL
101 KKK
102 JJJ
表_2
ID DATA
100 HHHHHHH
100 MMMMMMM
100 ZZZZZZZ
101 IIIIIII
101 FFFFFFF
102 EEEEEEE
谢谢您的帮助。
不知道为什么需要这样做,但是无论如何。
一种方法是使用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;
每当修改TABLE_1
的ID
( ON UPDATE CASCADE
)时,上述表结构将更新TABLE_2
所有匹配的ID
。 另外,每当您从TABLE_1
删除ID
时,也会从TABLE_2
删除所有匹配的条目( ON DELETE CASCADE
)。 由于此限制, TABLE_2
的ID
必须存在于TABLE_1
,才能成功完成INSERT
。
还请记住,外键会影响性能,但是在不确切知道为什么需要这种东西的情况下,我无法提出更好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.