1

だから、私はいくつかのフィールドを持つMySQLテーブルの貸衣装を持っています

table <Customers>
ID    Name    Description    State
0     Jack    waiting        0
1     Jane    complete       1

State フィールドを更新するトリガーを書きたい 説明が更新され、完全な値を取得する場合、State の値を 1 に設定する必要がある

これまでのところ、私はこれを思いつきました:

delimiter $$
CREATE TRIGGER customerUpdated 
    BEFORE UPDATE ON Customers
    FOR EACH ROW 
BEGIN
    IF NEW.Description = 'completed' THEN  
    UPDATE Customers SET State = '1' WHERE id = OLD.id;
END IF;
END$$
delimiter ;

しかし、私はエラーが発生します:

1442 - このストアド関数/トリガーを呼び出したステートメントで既に使用されているため、ストアド関数/トリガーのテーブル 'Customers' を更新できません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

UPDATE ステートメントをまったく実行する代わりに、 NEW.State を設定するだけでよいと思います。

IF NEW.Description = 'completed' THEN  
   SET NEW.State = 1;
END IF
于 2013-02-26T14:25:20.853 に答える