2012-05-02 85 views
0

我有两个表,TABLE_1TABLE_2当来自另一个表的值发生更改时,更新表中列的值

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

TABLE_2包含IDDATA,其中IDDATA形成化合物主键。

  1. 我正在寻找一个SQL查询,当他们在TABLE_1将被修改更新TABLE_2ID

  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 

谢谢您的帮助。

回答

1

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

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

上述表结构将更新所有的匹配IDTABLE_2每当TABLE_1一个ID被修改(ON UPDATE CASCADE) 。此外,每当您从TABLE_1删除ID时,TABLE_2中的所有匹配项也将被删除(ON DELETE CASCADE)。由于这个限制,TABLE_1必须存在来自TABLE_2ID,才能成功完成INSERT。另外请记住,外键影响性能,但不知道为什么你想要这样的事情,我不能建议任何更好的解决方案。

+0

非常有用我得到了我期待的......谢谢你...... – nikki

+0

@ user1370390:确保接受答案,并欢迎来到Stack Overflow。 – netcoder

相关问题