Estou enfrentando um problema muito estranho, pois implementei um gatilho na tabela A que criptografa dados e insere dados em outra tabela B e atualiza a coluna para 4 dígitos.
O problema é que a primeira inserção é de alguma forma ignorada e é corrigida a partir da 2ª inserção em diante, não sei por que a primeira inserção é ignorada. Qualquer ajuda seria ótimo.
Os é Linux e a versão do MySQL é 5.7.9
create table tableA(c1 varchar(10));
create table tableB(c1 varchar(60));
delimiter //
CREATE TRIGGER trig1 before INSERT
ON tableA FOR EACH ROW
BEGIN
IF LENGTH(LTRIM(RTRIM(new.c1))) > 4 then
BEGIN
insert into tableB(c1) select AES_ENCRYPT(new.c1,'test') from tableA;
Set new.C1 = RIGHT(LTRIM(RTRIM(new.C1)),4) ;
END;
end if;
END;
//
delimiter ;
insert into tableA values('423423544');
select count(*) from tableA;--1
select count(*) from tableB;--0
Eu acho que é porque você está selecionando da tabela A. Eu acho que a maneira certa de fazer isso é:
insert into tableB(c1) values (AES_ENCRYPT(new.c1,'test'));
Então, o gatilho ficará assim: