我正在寻找一个短期解决方案,同时我找出了同步在表中设置一个字段错误的原因 我准备了一个触发器,欢迎对它进行一些评论,以及任何必要的更正或更好的策略。
CREATE TRIGGER urlcorrect AFTER INSERT ON sym_node
FOR EACH ROW BEGIN
IF NEW.sync_url= 'http://wrongaddress' THEN
UPDATE sym_node SET sync_url= "http://123.456.7.89:1234/etc";
END IF;;
END$
delimiter;
感谢 大卫
答案 0 :(得分:0)
你的触发器在各方面都是错误的。
首先,我认为您需要一个BEFORE触发器,以便您可以在行进入您的表之前修复该行。
其次,这:
UPDATE sym_node SET sync_url= "http://123.456.7.89:1234/etc";
会更新sync_url
表格中的每个sym_node
,而这不是您想要的。我不认为MySQL会让你在该表的触发器内更新一个表(如果我错了,有人会纠正我)。此外,你应该使用单引号作为字符串文字,即使MySQL会让你使用双引号,也不要从MySQL松弛行为中汲取不良习惯。你想要:
set new.sync_url = 'http://123.456.7.89:1234/etc';
把所有这些放在一起,你就明白了:
delimiter $
create trigger urlcorrect before insert on sym_node
for each row begin
if new.sync_url = 'http://wrongaddress' then
set new.sync_url = 'http://123.456.7.89:1234/etc';
end if;
end;
$
delimiter ;