MYSQL: триггер только вызывает SP в первый раз - PullRequest
1 голос
/ 02 апреля 2019

Я сделал этот триггер, и он только вызывает хранимую процедуру в первый раз. Я хочу иметь возможность создавать несколько журналов только за одну операцию, и поэтому я хочу вызывать «InsertLog» несколько раз.

CREATE
DEFINER=`root`@`localhost`
TRIGGER `mydb`.`Cultura_AFTER_INSERT`
AFTER INSERT ON `mydb`.`Cultura`
FOR EACH ROW
BEGIN
    DECLARE idOperação INT;
    DECLARE operação VARCHAR(6);
    DECLARE tabela VARCHAR(50);
    DECLARE idObjecto VARCHAR(50);
    DECLARE coluna VARCHAR(50);
    DECLARE valor VARCHAR(300);

    SELECT MAX(idOperação) + 1 INTO idOperação FROM Log;
    IF idOperação IS NULL THEN
    SET idOperação = 1;
END IF; 
    SET operação = "INSERT";
    SET tabela = "Cultura";
    SET idObjecto = CAST(new.id AS CHAR);

    IF (new.Email <> NULL) THEN
        SET coluna = 'Email';
        SET valor = new.Email;
        CALL InsertLog(idOperação, operação, tabela, idObjecto, coluna, valor);
    END IF;

    IF (new.Nome <> NULL) THEN
        SET coluna = 'Nome';
        SET valor = new.Nome;
        CALL InsertLog(idOperação, operação, tabela, idObjecto, coluna, valor);
    END IF;

    IF (new.Descrição <> NULL) THEN
        SET coluna = 'Descrição';
        SET valor = new.Descrição;
        CALL InsertLog(idOperação, operação, tabela, idObjecto, coluna, valor);
    END IF;

END
...