使用另一个表更新时更新MySQL行

时间:2012-05-04 17:26:16

标签: mysql triggers sql-update

当一行更新时,我正在尝试使用触发器更新数据库中的列。

这是触发器

CREATE
DEFINER=`root`@`localhost`
TRIGGER `mysql_development`.`update_translated_position`
BEFORE UPDATE ON `mysql_development`.`players_to_teams`
FOR EACH ROW
BEGIN
    UPDATE players_to_teams
    INNER JOIN position_translator
    ON NEW.position = position_translator.RawPosition
    SET NEW.translated_position = position_translator.NCAAposAbbrev1;
END$$

我需要从原始translated_position输入中“计算”position(如果有人给我一个非标准位置)。

我认为这是锁定行,因为我得到了1096,没有使用表错误。

我需要使用外部players_to_teams表更新正在更新的position_translator行。

1 个答案:

答案 0 :(得分:1)

直接使用SET而不是UPDATE(因此完全避免加入):

SET NEW.translated_position := (
  SELECT NCAAposAbbrev1 FROM position_translator WHERE RawPosition = NEW.position
);