• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

A_T_C

Triggers - PostgreSQL

8 mensagens neste tópico

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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pera se estou a perceber é se o txt tiver o registo numa tabela não deixar fazer na outra é isso ?? lol meio confuso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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:

0

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