Синтаксическая ошибка mysql 5.2.3 в процедуре, вызываемой внутри триггера - PullRequest
0 голосов
/ 27 января 2011
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, когда я пытаюсь вставить строки любая помощь ??

спасибо

1 Ответ

1 голос
/ 27 января 2011
    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 сейчас:

ОК, значит вы пытаетесь удалить строки из текущей таблицы при вставке в нее. 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

Внутри хранимой функции или триггера запрещено изменять таблицу, которая уже используется (для чтения или записи) оператором, который вызвал функцию или триггер.

...