当一行更新时,我正在尝试使用触发器更新数据库中的列。
这是触发器
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
行。
答案 0 :(得分:1)
直接使用SET
而不是UPDATE
(因此完全避免加入):
SET NEW.translated_position := (
SELECT NCAAposAbbrev1 FROM position_translator WHERE RawPosition = NEW.position
);