2012-05-04 5 views
0

行が更新されたときにデータベースの列を更新するためにトリガーを使用しようとしています。別のテーブルを使用して更新するときにMySQLの行を更新する

これは私が生position入力(場合には、誰かが私に非標準的な位置を与える)からtranslated_positionを「計算」する必要がトリガー

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$$ 

です。

私は1096を取得しているので、これは行をロックしていると思います。テーブルにはエラーがありません。

外部position_translatorテーブルを使用して更新されるplayers_to_teams行を更新する必要があります。

答えて

1

使用SETが直接ではなく、UPDATE(したがって、完全に参加避ける):= `表記:

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

'は何ですか? –

+0

@TylerDeWitt:これは[代入演算子](http://dev.mysql.com/doc/ja/assignment-operators.html#operator_assign-value)です。 – eggyal

関連する問題