Procurar
Tópicos semelhantes
Últimos assuntos
Trigger Update
Página 1 de 1
Trigger Update
Oi pessoal. Estou com problemas com uma trigger na TPRD.
Trigger
CREATE TRIGGER [dbo].[TIPOPRD_UPDATE]
ON [dbo].[TPRD]
AFTER UPDATE
AS
DECLARE @CODCOLIGADA INT
DECLARE @IDPRD INT
SET @CODCOLIGADA =(SELECT CODCOLIGADA FROM INSERTED)
SET @IDPRD = (SELECT IDPRD FROM INSERTED)
UPDATE TPRD SET
CODTB1FAT=
CASE
WHEN TIPO='P' AND TRIBUTACAOECF='T17' THEN 'P00'
WHEN TIPO='P' AND TRIBUTACAOECF='FF' THEN 'P10'
ELSE NULL
END
WHERE CODCOLIGADA=@CODCOLIGADA
AND IDPRD=@IDPRD
o Problema é o seguinte: Quando é realizado um update é apenas um registro funcionar. Mas quando é realizado um update em muitiplos registros é apresentado um erro:
Msg 512, Level 16, State 1, Procedure TIPOPRD_UPDATE, Line 9
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Sei que o problema é que a trigger só funciona se o resultado for apenas um registro. Mas como posso corrigir a trigger quando existi mas de um registro sendo alterado?
Desde já sou grato pela ajuda!
Trigger
CREATE TRIGGER [dbo].[TIPOPRD_UPDATE]
ON [dbo].[TPRD]
AFTER UPDATE
AS
DECLARE @CODCOLIGADA INT
DECLARE @IDPRD INT
SET @CODCOLIGADA =(SELECT CODCOLIGADA FROM INSERTED)
SET @IDPRD = (SELECT IDPRD FROM INSERTED)
UPDATE TPRD SET
CODTB1FAT=
CASE
WHEN TIPO='P' AND TRIBUTACAOECF='T17' THEN 'P00'
WHEN TIPO='P' AND TRIBUTACAOECF='FF' THEN 'P10'
ELSE NULL
END
WHERE CODCOLIGADA=@CODCOLIGADA
AND IDPRD=@IDPRD
o Problema é o seguinte: Quando é realizado um update é apenas um registro funcionar. Mas quando é realizado um update em muitiplos registros é apresentado um erro:
Msg 512, Level 16, State 1, Procedure TIPOPRD_UPDATE, Line 9
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Sei que o problema é que a trigger só funciona se o resultado for apenas um registro. Mas como posso corrigir a trigger quando existi mas de um registro sendo alterado?
Desde já sou grato pela ajuda!
Jmarcelloc- Mensagens : 7
Pontos : 9
Data de inscrição : 30/04/2010
Re: Trigger Update
Não sei se já conseguiu resolver seu problema.
Você poderia tentar subistituir o update por isso:
isso deve funcionar para um ou mais registros. Teste antes de colocar em produção.
Abraço.
Você poderia tentar subistituir o update por isso:
- Código:
CREATE TRIGGER [dbo].[TIPOPRD_UPDATE]
ON [dbo].[TPRD]
AFTER UPDATE
AS
UPDATE P
SET P.Codtb1fat = ( CASE
WHEN P.Tipo = 'P'
AND P.Tributacaoecf = 'T17' THEN 'P00'
WHEN P.Tipo = 'P'
AND P.Tributacaoecf = 'FF' THEN 'P10'
ELSE NULL
END )
FROM Tprd P
INNER JOIN Inserted I ON (I.Codcoligada = P.Codcoligada AND I.Idprd = P.Idprd)
isso deve funcionar para um ou mais registros. Teste antes de colocar em produção.
Abraço.
Convidad- Convidado
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Ter 20 Jun 2017 - 12:48 por paulo.ferreira_rj
» Instalar base DEMO
Sex 2 Jun 2017 - 6:29 por akaytatsu
» Relatorio Rm reports / Holerite salario
Ter 18 Out 2016 - 8:09 por Gárgio
» DEFAULT NO CADASTRO DE FUNCIONARIOS RM LABORE
Sex 7 Out 2016 - 21:51 por mpsbrasilia
» Duvida RM Labore - Calculo Folha de Pagamento
Seg 12 Set 2016 - 15:51 por RIVALDO PAES
» Exportar Imagem do banco de dados SQL SERVER
Qui 28 Jul 2016 - 11:42 por edivan
» Consulta SQL
Qui 10 Set 2015 - 11:32 por evertonerp
» Existe Algum Demo do RM Labore???
Sex 17 Abr 2015 - 11:53 por fmsolucoes
» RM BIBLIOS
Seg 16 Fev 2015 - 7:50 por fmsolucoes