Procedure Trigger
Olá pessoal estou começando estudar postgres e gostaria quem puder, mostrar como seria esse caso:
[b:ebcafbe9f9]Tab Piloto[/b:ebcafbe9f9](Pilotos)
cod_piloto
nome
endereco
horas (Experiência do Piloto)
[b:ebcafbe9f9]TabRegVoo[/b:ebcafbe9f9](Registro de Vôo)
codpiloto
codvoo
horas
Nessa relaçao a cardinalidade é de 1:N
[b:ebcafbe9f9]O Problema?[/b:ebcafbe9f9]
Quando for registrado um vôo, um gatilho irá atualizar as horas do piloto [b:ebcafbe9f9]TabPiloto[/b:ebcafbe9f9] somando horas.registro de vôo + horas.piloto.
esse resultado seria as horas atualizadas do piloto que dever ser alterada no piloto correspondente na [b:ebcafbe9f9]TabPilotos[/b:ebcafbe9f9]
Alguem pode me ajudar??????? :roll:
[b:ebcafbe9f9]Tab Piloto[/b:ebcafbe9f9](Pilotos)
cod_piloto
nome
endereco
horas (Experiência do Piloto)
[b:ebcafbe9f9]TabRegVoo[/b:ebcafbe9f9](Registro de Vôo)
codpiloto
codvoo
horas
Nessa relaçao a cardinalidade é de 1:N
[b:ebcafbe9f9]O Problema?[/b:ebcafbe9f9]
Quando for registrado um vôo, um gatilho irá atualizar as horas do piloto [b:ebcafbe9f9]TabPiloto[/b:ebcafbe9f9] somando horas.registro de vôo + horas.piloto.
esse resultado seria as horas atualizadas do piloto que dever ser alterada no piloto correspondente na [b:ebcafbe9f9]TabPilotos[/b:ebcafbe9f9]
Alguem pode me ajudar??????? :roll:
Fslima
Curtidas 0
Respostas
Fslima
06/10/2008
:cry: Ninguém?????/
GOSTEI 0
Danilo Passos
06/10/2008
Seria algo assim:
Provavelmente, você deverá atentar para a soma de horas, vê se está somando corretamente.
-- Função chamada pela trigger CREATE OR REPLACE FUNCTION trg_TabRegVoo_insert() RETURNS trigger AS $BODY$ DECLARE BEGIN update TabPiloto set horas = horas + new.horas where cod_piloto = new.codpiloto; RETURN NEW; END; $BODY$ LANGUAGE ´plpgsql´ VOLATILE; -- Criação da trigger em si CREATE TRIGGER trg_TabRegVoo_insert AFTER INSERT ON TabRegVoo FOR EACH ROW EXECUTE PROCEDURE trg_TabRegVoo_insert();
Provavelmente, você deverá atentar para a soma de horas, vê se está somando corretamente.
GOSTEI 0
Fslima
06/10/2008
ERRO: operador não existe: character + character
LINE 1: update pilotos set horas = horas + $1 where codpiloto = $...
^
HINT: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
QUERY: update pilotos set horas = horas + $1 where codpiloto = $2
CONTEXT: PL/pgSQL function ´trg_regvoo_insert´ line 3 at SQL statement
********** Erro **********
ERRO: operador não existe: character + character
SQL state: 42883
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Contexto: PL/pgSQL function ´trg_regvoo_insert´ line 3 at SQL statement
Tá dando esses erros
o que seria?
LINE 1: update pilotos set horas = horas + $1 where codpiloto = $...
^
HINT: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
QUERY: update pilotos set horas = horas + $1 where codpiloto = $2
CONTEXT: PL/pgSQL function ´trg_regvoo_insert´ line 3 at SQL statement
********** Erro **********
ERRO: operador não existe: character + character
SQL state: 42883
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Contexto: PL/pgSQL function ´trg_regvoo_insert´ line 3 at SQL statement
Tá dando esses erros
o que seria?
GOSTEI 0
Danilo Passos
06/10/2008
Certifique-se que o campo horas é do tipo timestamp, e não char / varchar
GOSTEI 0
Fslima
06/10/2008
Funcionou perfeitamente!!!!
:P
Obrigado
:P
Obrigado
GOSTEI 0