0

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

这是触发器

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表更新正在更新的行。

4

1 回答 1

1

Use SET directly rather than UPDATE (and therefore avoid the join altogether):

SET NEW.translated_position := (
  SELECT NCAAposAbbrev1 FROM position_translator WHERE RawPosition = NEW.position
);
于 2012-05-08T00:53:52.443 回答