Erro na criação da trigger (Conversão de firebird para SQL Server 2008)

05/07/2012

0

Olá amigos.

Estou adaptando um sistema de Firefox para SQL Server.

Acontece que quando tento criar esta trigger ele me retorno erros do tipo:
Msg 4104, Level 16, State 1, Procedure TAU_MOV_FINANCEIRO, Line 12
The multi-part identifier NEW.DATA_BAIXA could not be bound.
Msg 4104, Level 16, State 1, Procedure TAU_MOV_FINANCEIRO, Line 35
The multi-part identifier NEW.CODIGO_CONTA could not be bound.
Msg 4104, Level 16, State 1, Procedure TAU_MOV_FINANCEIRO, Line 36
The multi-part identifier NEW.CODIGO_AGENCIA could not be bound.
Msg 4104, Level 16, State 1, Procedure TAU_MOV_FINANCEIRO, Line 37
The multi-part identifier NEW.CODIGO_BANCO could not be bound.
ETC..

Alguém sabe onde esta o erro nas declarações?

Obrigado



CREATE TRIGGER TAU_MOV_FINANCEIRO ON MOV_FINANCEIRO
AFTER UPDATE
AS

BEGIN

/* Variável para armazenar o código do movimento. */
DECLARE @CodMovBco INTEGER;

/* Se a data da baixa não for nula. */
IF (NEW.DATA_BAIXA IS NOT NULL)
BEGIN

/* Pega o último código de movimento + 1. */
SET @CodMovBco = ( SELECT MAX(CODIGO_MOVBCO) + 1
FROM MOV_BANCARIO );

/* Adiciona o movimento bancário do título baixado. */

INSERT INTO MOV_BANCARIO(
CODIGO_MOVBCO,
CODIGO_CONTA,
CODIGO_AGENCIA,
CODIGO_BANCO,
CODIGO_UNIDADE,
RECEITA_DESPESA,
DATA_LANCAMENTO,
VALOR_LANCAMENTO,
CONCILIADO,
HISTORICO,
ORIGEM_MOVIMENTO)
VALUES(
@CodMovBco,
NEW.CODIGO_CONTA,
NEW.CODIGO_AGENCIA,
NEW.CODIGO_BANCO,
NEW.CODIGO_UNIDADE,
NEW.RECEITA_DESPESA,
NEW.DATA_BAIXA,
NEW.VALOR_BAIXA,
N,
NEW.HISTORICO,
F);

END

END
Responder

Posts

05/07/2012

Cleber Azeredo

Ronaldo,

não sou grande conhecedor de SQL Server mas acredito que o mesmo não disponha das palavras reservadas OLD e NEW para referenciar os dados inseridos e alterados. No SQL Server você pode usar o inserted e o deleted, como no exemplo abaixo.


Por exemplo:

-- Você pode substituir
  IF (NEW.DATA_BAIXA IS NOT NULL) 


-- Por

DECLARE @data_baixa DATE
SET @data_baixa = (SELECT data_baixa INSERTED)

IF(@data_baixa IS NOT NULL)
BEGIN
...
END


Ronaldo como eu disse não sou um especialista no SQL Server, posso estar falando alguma bobagem.

Espero ter ajudado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar