Estou com o seguinte problema.
Tenho uma tabela de produtos, nesta tabela esta os produtos finais e tambem as materias primas (que podem ser vendidas avulso).
Por exemplo:
Produto Caminhão dentro deste produto esta vinculado varios outros produtos Peneu, Mangueira, so que dentre estes vinculos podem ocorrer outros vinculos, ex, Mangueira pode ter Terminal, Rosca e assim sucessivamente, ou seja, podem ter sei la 10 20 cadeias de vinculo.
Voltando a base de dados, eu tenho essa tabela de produtos contendo tudo, e tenho outra tabela de vinculo, que faço a relação entre os produtos, e tenho outra tabela de estoque, que é onde eu faço as baixas de estoque.
O que acontece é o seguinte, preciso que no momento que um produto seja debitado do estoque, no caso o Caminhão automaticamente TODOS os vinculos sejam debitados tambem, fiz uma trigger para isso, so que o mysql entende que é um loop infinito.
Segue tabelas e triggers.
TABELA DE PRODUTOS
CREATE TABLE `produtos` ( `id_produto` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `cod_produto` VARCHAR(255) NULL DEFAULT NULL, `desc_produto` VARCHAR(120) NULL DEFAULT NULL, `valor_produto` DECIMAL(10,2) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`id_produto`), UNIQUE INDEX `id_produto` (`id_produto`) )
TABELA DE VINCULOS
CREATE TABLE `estrutura` ( `id_estrutura` BIGINT(20) NOT NULL AUTO_INCREMENT, `id_produto` BIGINT(20) NOT NULL DEFAULT '0', `id_produto_vinculado` BIGINT(20) NOT NULL DEFAULT '0', `nome_produto` VARCHAR(120) NOT NULL, `qtde_estrutura` DECIMAL(10,2) NOT NULL DEFAULT '0.00', PRIMARY KEY (`id_estrutura`) )
TABELA DE ESTOQUE
CREATE TABLE `estoque` ( `id_estoque` BIGINT(20) NOT NULL AUTO_INCREMENT, `id_venda` BIGINT(20) NULL DEFAULT '0', `id_produto` BIGINT(20) NULL DEFAULT '0', `tipo_estoque` CHAR(7) NULL DEFAULT 'Entrada', `qtde_estoque` DECIMAL(10,2) NULL DEFAULT '0.00', `obs_estoque` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`id_estoque`) )
TRIGGER NA TABELA DE ESTOQUE
DROP TRIGGER IF EXISTS `estoque_trigger`; SET SESSION SQL_MODE=''; DELIMITER // CREATE TRIGGER `estoque_trigger` AFTER INSERT ON `estoque` FOR EACH ROW BEGIN INSERT INTO estoque(id_venda,id_produto,tipo_estoque,qtde_estoque,obs_estoque) SELECT NEW.id_venda,id_produto_vinculado,NEW.tipo_estoque,(NEW.qtde_estoque * qtde_estrutura),NEW.obs_estoque FROM estrutura WHERE id_produto = NEW.id_produto; END// DELIMITER ;
me ajudem galera heheheh..
Abraço