php - 当另一个表中的值发生更改时更新表中列的值

标签 php mysql

我有两个表:TABLE_1TABLE_2

TABLE_1 包含 IDNAME,其中 ID 是主键。

TABLE_2 包含 IDDATA,其中 IDDATA 构成一个复合主键。

  1. 我正在寻找一个 SQL 查询,当 TABLE_1 中的 ID 发生更改时,该查询可以更新 TABLE_2 中的 ID

  2. 如何创建这个表结构?

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每当 IDTABLE_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/

相关文章:

MySQL远程连接(复制)

android - 如何使用 json 将 GPS 坐标从 android 发布到数据库

php - 使用命名空间时找不到 SimpleXMLElement

php - DomDocument 删除属性

PHP:不等于 (!=) 运算符的多个条件不起作用

javascript - 将 PHP 数组传递给 JavaScript 时出现问题

php - 将 MySQL 查询结果输出到组合框

mysql - 选择行位置和整行

mysql - SQL 查询 - 从多个匹配中过滤结果

php - 保存前返回新的 Laravel 模型 ID