Ir para conteúdo



Trigger Para Baixar Estoque De Kits


  • Por favor, faça o login para responder
Não há respostas para este tópico

#1 luan2608

luan2608
  • Membros
  • 1 posts

Postado 24 January 2012 - 02:10 PM

Boa tarde Pessoal,

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






1 usuário(s) está(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)