Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

A_T_C

Triggers - PostgreSQL

Mensagens Recomendadas

A_T_C    0
A_T_C

Boa tarde!

Estamos a tentar desenvolver um trigger que não permite que um registo c 2 atributos iguais estejam em 2 tabelas diferentes.

create function me_txt_update()
returns trigger
as
$$
declare var integer default 0;
begin
	select count(*) into var
	from respme
	where respme.numperg = new.numperg;
	if var > 0 then
		raise exception 'Erro';
	end if;
	return new;
end
$$
language plpgsql;

create trigger me_txt before insert on respme
for each row execute procedure me_txt_update();

Mas não está a ter o comportamento pretendido...

O q se tem q fazer para funcionar ? :wallbash:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

O que ele está a fazer em concreto?

Já agora ter o mesmo registo em duas tabelas diferentes vai um bocado de encontra a filosofia do modelo relacional, não estarão a avaliar mal a questão ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
A_T_C    0
A_T_C

Sim, por ir contra a filosofia do modelo é q implementámos um trigger. Supostamente está a verificar se a pergunta txt já tem lá o registo e se estiver, não permitir o registo na outra tabela (respme).

Mas não estou a perceber o q fazemos mal ... :bored:

Alguma ajuda?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Não seria mais fácil fazer um select antes do insert para validar?? Ou então reestruturar o modelo para não ter essa "ambiguidade".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
A_T_C    0
A_T_C

Seria de facto melhor, mas como isto é para um projecto, é nos feita esta imposição de triggers para resolver a questão ...  :bored:

E q não sabemos como resolver ...  :wallbash:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

Não sei se é grande ajuda mas deixo aqui uma pequena doc sobre triggers em postgresql bastante explicativa

http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Fun%C3%A7%C3%B5es_Definidas_pelo_Usu%C3%A1rio_e_Triggers/Triggers

Espero que ajude, infelizmente embora já tenha trabalhado com PL/SQL não tenho muita pratica e experiência na área

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade