Fórum Dúvida com Trigger #378884

04/06/2010

0

Olá, pessoal!

Estou iniciando na programação em bancos de dados (view, trigger, stored procedure, etc) e surgiu uma dúvida que não estou conseguindo solucionar.

Estou tentando criar uma trigger de inserção no IBExpert, cujo script segue abaixo (sem o cabeçalho da trigger)

--Operação 5 é Operação de Bônus
AS
begin
    if (new.bonus = 40) then
    begin
        if (new.saldo > 2000.00) then
        begin
            insert into tbl_movimentacoes(id_operacao, id_conta, data_movimentacao, valor)
            values(5, new.id_conta, current_timestamp, 500.00);

            .
            .
            .

        end
    end
end

A sintaxe está ok, mas quando clico em commit, aparece o seguinte erro:



Desconfio que seja devido aos campos em negrito, onde estou tentando inserir data e hora atuais do servidor.

Como posso fazer essa inserção de data/hora pelo banco de dados no caso do Firebird?

Por favor, me ajudem!

Desde já agradeço!!!
Filipe Silva

Filipe Silva

Responder

Posts

07/06/2010

Emerson Nascimento

publique a estrutura (script DDL) da tabela tbl_movimentacoes.
Responder

Gostei + 0

07/06/2010

Tiago Melo

realmente se vc utilizar os seguintes selects

select Current_Date from rdb$Database

select current_timestamp from rdb$database

verá que o primeiro retorna apenas data, já o seguinte retorna data e hora...tente
passar ao invéz de timestamp passar o Current_Date

qualquer coisa posta ai
Responder

Gostei + 0

07/06/2010

Tiago Melo

esqueci de comentar que isso ocorre porque diferentemente de outros bancos de dados como oracle e sql server o firebird trabalha com os tipos separados para data e hora, então sendo assim vc tem mesmo que armazenar tanto data como horas em campos distintos...provavelmente o seu campo ai é DATE...e o current_timestamp esta tentando gravar a data e a hora em um campo onde é aceito somente data....
Responder

Gostei + 0

07/06/2010

Filipe Silva

O campo data_movimentacao era do tipo timestamp e eu queria fazer uma inserção. Logo, os current_date e current_timestamp não estavam funcionando.

Para resolver o problema, fiz o comando insert da seguinte maneira, como me foi recomendado:

insert into tbl_movimentacoes(id_operacao, id_conta, data_movimentacao, valor)
values(5, new.id_conta, Cast('Now' as Timestamp) , 500.00);

Por meio desse comando, consegui inserir data e hora atuais em minha trigger.

Obrigado pela ajuda, pessoal!!!


Responder

Gostei + 0

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

Aceitar