繁体   English   中英

当另一个表中的值更改时,更新表中列的值

[英]Update values of a column in a table when a value from another table changes

我有两个表TABLE_1TABLE_2

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

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

  1. 我正在寻找一个SQL查询,当TABLE_1ID TABLE_2时,该查询将更新TABLE_2ID

  2. 如何创建此表结构?

表格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_1IDON UPDATE CASCADE )时,上述表结构将更新TABLE_2所有匹配的ID 另外,每当您从TABLE_1删除ID时,也会从TABLE_2删除所有匹配的条目( ON DELETE CASCADE )。 由于此限制, TABLE_2ID必须存在于TABLE_1 ,才能成功完成INSERT

还请记住,外键会影响性能,但是在不确切知道为什么需要这种东西的情况下,我无法提出更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM