Trigger no SQL Server para Validar Grupo de Produto Adicional
Criei uma trigger para validar no cadastro de produtos, os grupos adicionais em que o produto faz parte
duas condições simples para validar o grupo adicional, sendo a primeira onde se o grupo adicional for igual
ao grupo principal, notificar o usuário.
a segunda, verifica se o grupo adicional já está cadastrado, caso esteja, notificar ou usuário que o grupo
adcional já está cadastrado.
Porem na segunda condição está bloqueando também os grupos adicionais não cadastrado.
ALTER TRIGGER [base].[TRG_VALIDA_GRUPOADICIONAL] ON [base].[AD_GRUPRODADICIONAL]
FOR INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@V_CODPROD INT,
@V_CODGRUPOPROD INT,
@TESTE VARCHAR(100),
@V_PRODUTO INT,
@V_GRUPO INT,
@V_GRUPOADICIONAL INT,
@V_MESSAGE VARCHAR(100) = '',
@V_MESSAGE1 VARCHAR(100) = '',
@V_SUCESSO VARCHAR(20)
SET @V_MESSAGE = 'Não é possível cadastrar Grupo Adicional igual ao Grupo do Produto'
SET @V_MESSAGE1 = 'Grupo de Produto já cadastrado nos Adicionais'
SET @V_SUCESSO = 'Grupo Adcional cadastrado com sucesso!'
SELECT @V_CODPROD = CODPROD, @V_CODGRUPOPROD = CODGRUPOPROD FROM INSERTED
--SET @V_GRUPO = @V_CODGRUPOPROD
SET @V_PRODUTO = (SELECT PRO.CODPROD FROM TGFPRO PRO WHERE PRO.CODPROD = @V_CODPROD)
SET @TESTE = (CONVERT(VARCHAR(9),@V_PRODUTO)+'--'+CONVERT(VARCHAR(15),@V_CODGRUPOPROD))
--Grupo do produto, igual ao Grupo de Produto Adicional
IF(EXISTS(SELECT PRO.CODGRUPOPROD FROM TGFPRO PRO WHERE PRO.CODPROD = @V_CODPROD AND PRO.CODGRUPOPROD = @V_CODGRUPOPROD))
BEGIN
RAISERROR(@V_MESSAGE,12,1)
END
--Grupo de Produtos já estiver cadastrado nos Adicionais
IF(EXISTS(SELECT * FROM AD_GRUPRODADICIONAL GA WHERE GA.CODPROD = @V_CODPROD AND GA.CODGRUPOPROD = @V_CODGRUPOPROD))
BEGIN
RAISERROR(@V_MESSAGE1,12,1)
RETURN
END
END
duas condições simples para validar o grupo adicional, sendo a primeira onde se o grupo adicional for igual
ao grupo principal, notificar o usuário.
a segunda, verifica se o grupo adicional já está cadastrado, caso esteja, notificar ou usuário que o grupo
adcional já está cadastrado.
Porem na segunda condição está bloqueando também os grupos adicionais não cadastrado.
ALTER TRIGGER [base].[TRG_VALIDA_GRUPOADICIONAL] ON [base].[AD_GRUPRODADICIONAL]
FOR INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@V_CODPROD INT,
@V_CODGRUPOPROD INT,
@TESTE VARCHAR(100),
@V_PRODUTO INT,
@V_GRUPO INT,
@V_GRUPOADICIONAL INT,
@V_MESSAGE VARCHAR(100) = '',
@V_MESSAGE1 VARCHAR(100) = '',
@V_SUCESSO VARCHAR(20)
SET @V_MESSAGE = 'Não é possível cadastrar Grupo Adicional igual ao Grupo do Produto'
SET @V_MESSAGE1 = 'Grupo de Produto já cadastrado nos Adicionais'
SET @V_SUCESSO = 'Grupo Adcional cadastrado com sucesso!'
SELECT @V_CODPROD = CODPROD, @V_CODGRUPOPROD = CODGRUPOPROD FROM INSERTED
--SET @V_GRUPO = @V_CODGRUPOPROD
SET @V_PRODUTO = (SELECT PRO.CODPROD FROM TGFPRO PRO WHERE PRO.CODPROD = @V_CODPROD)
SET @TESTE = (CONVERT(VARCHAR(9),@V_PRODUTO)+'--'+CONVERT(VARCHAR(15),@V_CODGRUPOPROD))
--Grupo do produto, igual ao Grupo de Produto Adicional
IF(EXISTS(SELECT PRO.CODGRUPOPROD FROM TGFPRO PRO WHERE PRO.CODPROD = @V_CODPROD AND PRO.CODGRUPOPROD = @V_CODGRUPOPROD))
BEGIN
RAISERROR(@V_MESSAGE,12,1)
END
--Grupo de Produtos já estiver cadastrado nos Adicionais
IF(EXISTS(SELECT * FROM AD_GRUPRODADICIONAL GA WHERE GA.CODPROD = @V_CODPROD AND GA.CODGRUPOPROD = @V_CODGRUPOPROD))
BEGIN
RAISERROR(@V_MESSAGE1,12,1)
RETURN
END
END
Jurandir Ricardo
Curtidas 0