0

トリガーを準備したテーブルで同期が1つのフィールドを間違って設定している理由を解明している間、短期的な解決策を探しています。それに関するコメントと、必要な修正またはより良い戦略を歓迎します。

     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_url内のすべてを更新しますが、それはあなたが望むものではありません。sym_nodeまた、MySQL では、そのテーブルのトリガー内のテーブルを UPDATE できないと思います (これについて間違っている場合は、誰かが訂正してください)。また、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 に答える