0
DELIMITER |

CREATE TRIGGER RV1       
after insert on Iscr 
for each row 
call ProcRV1(new.Usere,new.Sub);

create procedure ProcRV1(nUsere varchar(15),nSub varchar(15))

delete from Iscr

where Usere=nUsere && Sub=nSub && Usere=Sub

|

これをテーブルに使用すると、行を挿入しようとするとエラー1442が発生します。

ありがとう

4

1 に答える 1

1
    DELIMITER |

    create procedure ProcRV1(nUsere varchar(15),nSub varchar(15))
    BEGIN
        delete from Iscr where Usere=nUsere && Sub=nSub && Usere=Sub;
    END
    |

    CREATE TRIGGER RV1       
        after insert on Iscr 
        for each row 
        BEGIN
            call ProcRV1(new.Usere,new.Sub);
        END
    |

    DELIMITER ;

編集:今あなたのSPを見ることについて:

OK、それであなたは現在のテーブルに挿入している間に行を削除しようとしています。MySQLはそれを許可していません。しかし、トリックが必要です。ここで行われたようなことhttp://crazytoon.com/2008/03/03/mysql-error-1442-hy000-cant-update-table-t1-in-stored-functiontrigger-because-it-is-already-used- by-statement-which-invoked-this-stored-functiontrigger /

これを参照してください:http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html

ストアド関数またはトリガー内で、関数またはトリガーを呼び出したステートメントによって(読み取りまたは書き込みのために)すでに使用されているテーブルを変更することは許可されていません。

于 2011-01-27T09:45:43.087 に答える