0

我正在寻找一个短期解决方案,同时我在弄清楚为什么同步会在表中设置一个字段错误我准备了一个触发器,并欢迎对此发表评论,以及任何必要的更正或更好的策略。

     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;

谢谢大卫

4

1 回答 1

0

你的触发器在很多方面都是错误的。

首先,我认为您需要一个 BEFORE 触发器,以便您可以在该行进入您的表之前修复该行。

其次,这个:

UPDATE sym_node SET sync_url= "http://123.456.7.89:1234/etc";

会更新表中的每一个sync_urlsym_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 ;
于 2012-04-30T05:50:48.727 回答