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

时间:2012-05-02 15:26:56

标签: php mysql

我有两个表,TABLE_1TABLE_2

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

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

  1. 我正在寻找一个SQL查询,当ID更改TABLE_2时,TABLE_1更新ID NAME 100 LLL 101 KKK 102 JJJ

  2. 如何创建此表结构?

  3. TABLE_1

    ID      DATA
    100     HHHHHHH
    100     MMMMMMM
    100     ZZZZZZZ
    101     IIIIIII
    101     FFFFFFF
    102     EEEEEEE
    

    TABLE_2

    {{1}}

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不知道为什么你需要这样做,但无论如何。

实现此目的的一种方法是使用InnoDB存储引擎中提供的foreign key constraints

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

另外请记住,外键会影响性能,但如果不确切知道为什么会这样,我就无法提出更好的解决方案。