Executar Trigguer - SC8

Prezados.

Pergunta de iniciante e inexperiente.

Tenho algumas TRG’s funcionando BD Firebird 2.5, perfeitamente em Delphi e até mesmo ASP.
TRG de auditoria, como gravar data e hora de uma alteração ou inclusão em tabelas.

Não estão funcionando no SC! Devo configurar alguma coisa ou algum comando que não tenho conhecimento?

Eu as disparo sempre que for um insert update e com a definicao de BEFORE (no banco).

Um grande abraço!

Se foi feito uma ‘trigger/gatilho’ real certinha é o SGDB que controla, é INDEPENDENTE do SC, verifica ela:

- Chamados Automaticamente
Quando há uma tentativa de inserir, atualizar ou excluir os dados em uma tabela, e um TRIGGER tiver sido definido na tabela para essa ação específica, ele será executado
automaticamente, não podendo nunca ser ignorado.

- Não podem ser chamados diretamente
Ao contrário dos procedimentos armazenados do sistema, os disparadores não podem ser chamados diretamente e não passam nem aceitam parâmetros.

http://www.devmedia.com.br/introducao-a-triggers/1695

Jailton,

Segue a Trg:

CREATE OR ALTER TRIGGER GRAVA_CN_TB_ALUNOS FOR TB_ALUNOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NOME_IP varchar(30);
declare variable PROCESSO_REMOTO varchar(50);
declare variable DIAHORA timestamp;
declare variable DIA smallint;
declare variable MES smallint;
declare variable ANO smallint;
declare variable HORA smallint;
declare variable MINUTO smallint;
declare variable SEGUNDO smallint;
declare variable USUARIOS smallint;
begin
select count(MON$ATTACHMENT_ID) as USUARIOS from mon$attachments INTO :usuarios;
select MON$REMOTE_ADDRESS, MON$REMOTE_PROCESS from mon$attachments where mon$attachment_id = current_connection INTO :NOME_IP,:PROCESSO_REMOTO;
Select Extract(Day From current_date) as dia,
Extract(Month From current_date)as mes,
Extract(Year From current_date) as ano,
Extract(hour From current_time) as hora,
Extract(MINUTE From current_time)as minuto,
Extract(SECOND From current_time) as segundo
from rdb$database
into :dia, :mes, :ano, :hora, :minuto, :segundo;
if (inserting) then
begin
new.cn = (:ANO||LPAD(:MES,2,0)||LPAD(:DIA,2,0)||:hora||LPAD(:minuto,2,0)||LPAD(:segundo,2,0)||:NOME_IP||LPAD(:usuarios,2,0)||:PROCESSO_REMOTO); end
if (updating) then
begin
new.cn = (:ANO||LPAD(:MES,2,0)||LPAD(:DIA,2,0)||:hora||LPAD(:minuto,2,0)||LPAD(:segundo,2,0)||:NOME_IP||LPAD(:usuarios,2,0)||:PROCESSO_REMOTO);
end

end

O que acabei de reparar, é que no desenvolvimento (meu computador), ela está atualizando o campo CN perfeitamente pelo SC. Agora quando passo para a produção (Kinghost), ela está gravando CN como null… Mas o formulário está atualizando outras tabelas perfeitamente.

Abs

Tem que ver se a versão do FB do KINGHOST é a mesma que a sua, ai checa com o suporte exclui ela e faz novamente, mas isso não é erro do SC.

Olá,

Uma trigger é disparada automaticamente pelo teu banco, não tem nada a ver com o SC.
Verifique teu banco.

Att,
Paulo.

Já verifiquei.

É muito estranho para mim. No meu computador ela funciona. Na Kinghost (producao) não grava!!!
Comportamentos diferentes.
O Jailton pediu para ver a versão do FB e é a mesma.

Apaguei tudo da Kinghost e estou subindo tudo de novo…

Abs

Exatamente como o Jailton falou, não tem nada a ver com o SC, isso é coisa do Banco.
Não da pra misturar as coisas