2011-01-27 5 views
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 

| 

これはIscrのテーブルで行が挿入されたときにエラー1442が表示されます。 ヘルプがありますか?mysql 5.2.3プロシージャの構文エラーがトリガ内で呼び出されました

おかげ

+0

おっと、あなたの質問は完全に変更されました。答え – Nishant

+0

は、CREATE TRIGGER RV6 Risposta ProcRV6(new.Video、new.Risposta)に挿入した後、 はProcRV(NVIDのVARCHAR(15)、nRispのVARCHAR(15)) はビデオ= NVID && Risposta = nRisp &&ビデオ= Risposta – Nishant

答えて

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://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html

、呼び出したステートメントによってすでに(読み取りまたは書き込みのために)使用されているテーブルを変更することが許可されていません。ここで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/

これを参照してください行って何かのように関数またはトリガー。

+0

を更新しましたuser591931 @ – user591931

+0

は私が感謝を意味するが、今私はしましたRisposta から削除する手順を作成します別の問題がある... – user591931

+0

@ user591931あなたの質問を更新できますか?また、あなたが得ているエラーを貼り付けてください – Nishant

関連する問題