Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Chong

Trigger

Recommended Posts

Olá pessoal

 

Estou começando estudar PostgreSQL e gostaria de uma ajuda.

 

Alguem poderia mostrar como seria uma Trigger para esse exemplo:

 

tabela reg_voo possui os atributos: codvoo, codpiloto, horas

 

tablela pilotos possui os atributos: codpiloto, nome, ..., horas

 

 

A Trigger seria:

 

Quando for inserido um registro de voo atualize as horas do piloto.

 

 

 

alguem poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

create trigger nome_trigger
before insert or update or delete on tabela
for each row
execute procedure
check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');

tu quer colocar a trigger em qual tabela?

dentro de uma trigger você não consegue alterar campos em outras tabelas, só por meio de procedures

Compartilhar este post


Link para o post
Compartilhar em outros sites

create trigger nome_trigger
before insert or update or delete on tabela
for each row
execute procedure
check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');

tu quer colocar a trigger em qual tabela?

dentro de uma trigger você não consegue alterar campos em outras tabelas, só por meio de procedures

Seria na reg_voo

também tem somar com o novo valor.

 

no caso tem que ter old.horas new. horas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso tem que ter old.horas new. horas?

depende o que você precisa,

 

o que você precisa??? qual é a soma que você quer fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso tem que ter old.horas new. horas?

depende o que você precisa,

 

o que você precisa??? qual é a soma que você quer fazer?

 

O registro de voo tem o atributo "horas" que é o tempo voado pelo piloto no voo

 

Quando for inserido o registro o gatilho atualizaria a tabela pilotos somente no atributo (horas) somando as horas do registro com o as (horas)

da tabela piloto

Compartilhar este post


Link para o post
Compartilhar em outros sites

o gatilho atualizaria a tabela pilotos somente no atributo (horas) somando as horas do registro com o as (horas) da tabela piloto

o gatilho que você quer fazer é da tabela piloto e vai alterar o valor na tabela piloto, é isso?

 

no caso você poderia fazer assim

 

:new.horas := :new.horas + :old.horas;

Compartilhar este post


Link para o post
Compartilhar em outros sites

o gatilho atualizaria a tabela pilotos somente no atributo (horas) somando as horas do registro com o as (horas) da tabela piloto

o gatilho que você quer fazer é da tabela piloto e vai alterar o valor na tabela piloto, é isso?

 

no caso você poderia fazer assim

 

:new.horas := :new.horas + :old.horas;

 

o gatilho que você quer fazer é da tabela piloto e vai alterar o valor na tabela piloto, é isso?

trigger da tabela reg_voo e vai alterar as horas da tabela pilotos

Compartilhar este post


Link para o post
Compartilhar em outros sites

aí não dá para fazer na própria trigger,

na trigger tu pode chamar um procedure (ou package) e que aí vai alterar na tabela piloto .

passa como parâmetro o valor velho e novo

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE OR REPLACE TRIGGER TABELA

AFTER INSERT OR UPDATE OR DELETE

ON CLAUSULA

FOR EACH ROW

DECLARE

-- variable declarations

BEGIN

IF INSERTING THEN

PRC_INSERT(:new.oid_cod, :old.oid_cod);

ELSIF UPDATING THEN

PRC_UPDATE(:new.oid_cod, :old.oid_cod);

ELSIF DELETING THEN

PRC_DELETE(:new.oid_cod, :old.oid_cod);

END IF;

/*

EXCEPTION

WHEN ...

-- exception handling

*/

END;

create prc_insert

begin

--faz o teu update

end;

e faz essa procedure para o update e delete caso use

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.