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

直接使用するのSETではなくUPDATE(したがって、結合を完全に回避します):

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