Fórum Erro na criação da trigger (Conversão de firebird para SQL Server 2008) #419462
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)