MySQL触发器改变特定行上的第二个表

时间:2013-08-05 16:46:59

标签: mysql

我创建了一个触发器:

CREATE TRIGGER `update_tb2` AFTER UPDATE ON  `table_1` FOR EACH ROW 

IF new.parameter =  'param1' 
    THEN UPDATE table_2 SET table_2.input =  '10' WHERE table_2.key =  '0';    
END IF ;

它按预期工作,当我更新table_1中的任何行时,更新另一个表中key = 0的那一行。 由于两个表中都有一个字段键,我想在第二个表中更新为具有table_1中更新行的相同键的行。我无法弄清楚如何在IF块中使用table_2.key。

2 个答案:

答案 0 :(得分:1)

您可以使用新的或旧的关键字(如果您更改键值,您可能想要使用其中一个)。它允许您访问table_1上更新的记录中的所有值:

CREATE TRIGGER `update_tb2` AFTER UPDATE ON  `table_1` FOR EACH ROW 

IF new.parameter =  'param1' 
    THEN UPDATE table_2 SET table_2.input =  '10' WHERE table_2.key =  new.key;    
END IF ;

您可以在此fiddle

上查看示例

答案 1 :(得分:1)

试试这个:

CREATE TRIGGER `update_tb2` AFTER UPDATE ON  `table_1` FOR EACH ROW 

IF new.parameter =  'param1' 
    THEN UPDATE table_2 SET table_2.input =  '10' WHERE table_2.key =  old.key;
END IF ;