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
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
Rfb
Curtir tópico
+ 0
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
-- Por
Ronaldo como eu disse não sou um especialista no SQL Server, posso estar falando alguma bobagem.
Espero ter ajudado.
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
Clique aqui para fazer login e interagir na Comunidade :)