Boas colegas, estou com um problema que ainda não consegui resolver. Pretendo criar um trigger que sempre que a coluna de quantidade de produto sofrer um update ele dispare uma acção para uma outra tabela. É possível no mysql? Se sim como, qual seria a lógica?
Tabela que sofrera update no campo quantidade
'producto', 'CREATE TABLE `producto` (\n
idProducto` int(11) NOT NULL AUTO_INCREMENT,\n
`artigo` int(11) NOT NULL,\n `data` datetime NOT NULL,\n
`tipoProducto` varchar(50) NOT NULL,\n
`descricao` mediumtext NOT NULL,\n
`quantidade` int(11) NOT NULL,\n
`validade` date DEFAULT NULL,\n
PRIMARY KEY (`idProducto`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8'
DELIMITER $
CREATE TRIGGER meu_trigger AFTER UPDATE
ON producto
FOR EACH ROW
BEGIN
if NEW.quantidade <> OLD.quantidade THEN
--Se o campo 'quantidade' tiver sido alterada execute a operação desejada
END IF;
END$
DELIMITER ;
Essa sintaxe não é para o sql server? Tentei correr mas não tive resposta nem do workbench nem do command line client…
DELIMITER $
create trigger acrescProducto after update on
producto for each row
begin
if new.quantidade<>old.quantidade then
insert into entrada_producto values(default, new.idProducto, now(), new.quantidade, 'Acréscimo de producto')
end if;
DELIMITER ;
Esta sintaxe é do Mysql, este é um script que peguei de um projeto meu!
veja :
DELIMITER $
CREATE TRIGGER trigger_registra_log_alteracao_senha AFTER UPDATE
ON tb_usuario
FOR EACH ROW
BEGIN
IF NEW.senha <> OLD.senha THEN
INSERT INTO tb_log_alteracao_senhas (id,id_usuario,data_alteracao, hora_alteracao,senha_anterior,senha_nova)
VALUES (NULL,OLD.id, NOW(), NOW(), OLD.senha, NEW.senha);
END IF;
END$
DELIMITER ;
Consegui criar a trigger que sempre que o campo quantidade for modificado, ou seja, sempre que for acrescentado um valor a quantidade de um determinado producto irá disparar uma ação, para isto usei a ferramenta do workbench que me facilitou imenso.
CREATE DEFINER=`root`@`localhost` TRIGGER `producto_AFTER_UPDATE` AFTER UPDATE ON `producto` FOR EACH ROW BEGIN
if new.quantidade>old.quantidade then
insert into entrada_producto values(null, new.idproducto, now(), new.quantidade, 'Acréscimo de producto');
end if;
END