0

我有两张桌子,TABLE_1TABLE_2

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

TABLE_2包含IDand DATA,其中IDandDATA形成复合主键。

  1. 我正在寻找一个 SQL 查询,IDTABLE_2它们被更改时更新它们TABLE_1

  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

感谢您的帮助。

4

1 回答 1

1

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

一种方法是使用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;

上面的表结构将在修改 in时更新所有匹配ID项( )。此外,每当您删除from时,所有匹配的条目 from也将被删除 ( )。由于这个限制,from必须存在才能成功完成。TABLE_2IDTABLE_1ON UPDATE CASCADEIDTABLE_1TABLE_2ON DELETE CASCADEIDTABLE_2TABLE_1INSERT

还要记住,外键会影响性能,但在不知道你为什么想要这样的东西的情况下,我不能提出任何更好的解决方案。

于 2012-05-02T16:06:13.077 回答