【问题标题】:Update MySQL Row When Updating Using Another Table使用另一个表更新时更新 MySQL 行
【发布时间】:2012-05-04 17:26:15
【问题描述】:

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

这是触发器

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

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

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

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

【问题讨论】:

    标签: mysql triggers sql-update


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多