Usuário com melhor resposta
Loop na Trigger

Pergunta
-
Boa tarde Pessoal.Preciso de uma orientação no seguinte cenário: Meu sistema gerencia 2 empresas, e o cadastro de produto é individual para as duas. Porém a ordem é que o cadastro de produto seja único. Com isso preferi utilizar uma Trigger na tabela para realizar essa "Duplicação", ou seja, se eu inserir na empresa A o produto 999999 também será inserido na empresa B.
Exemplo:
TB_PRODUTO
#cod_empresa
#cod_produto
des_produtoEMPRESA PRODUTO DESCRICAO
A 999999 PAPEL --> registro incluído pela tela do sistema
B 999999 PAPEL --> replicadoCriei a trigger da seguinte forma, ela vai ficar inserindo como um loop e da violação de chave.Alguém pode me orientar em corrigir ou criar de outra forma?
CREATETRIGGERDUPLICA_PRODUTO ONTB_PRODUTO
AFTERINSERT
AS
BEGIN
DECLARE@COD_EMP INT;
SELECT@COD_EMP =cod_empresa FROMinserted
IF (@COD_EMP =200)
BEGIN
SET@COD_EMP =100
END;
IF (@COD_EMP =100)
BEGIN
SET@COD_EMP =200
END;
InsertintoTB_PRODUTO(cod_empresa,cod_produto,des_produto)
SELECT@COD_EMP,cod_produto,des_produto
FROMinserted
END;
--- André Abreu
Respostas
-
Boa noite,
Experimente dessa forma:
CREATETRIGGERDUPLICA_PRODUTO ONTB_PRODUTO AFTERINSERT AS BEGIN Insert into TB_PRODUTO (cod_empresa, cod_produto, des_produto) SELECT case when cod_empresa = 100 then 200 else 100 end, cod_produto, des_produto FROM inserted END;
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ quinta-feira, 29 de outubro de 2015 11:42
Todas as Respostas
-
Boa noite,
Experimente dessa forma:
CREATETRIGGERDUPLICA_PRODUTO ONTB_PRODUTO AFTERINSERT AS BEGIN Insert into TB_PRODUTO (cod_empresa, cod_produto, des_produto) SELECT case when cod_empresa = 100 then 200 else 100 end, cod_produto, des_produto FROM inserted END;
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ quinta-feira, 29 de outubro de 2015 11:42
-