[Portugal] trigger que actualize apenas registos novos
Jorge Penedo
jorge.penedo gmail.com
Segunda-Feira, 14 de Novembro de 2011 - 06:44:29 EST
O after / acção só é disparado após a ocurrência. Por exemplo ao inserir
numa tabela, o trigger só dispara depois dos dados estarem armazenados.
Já no before, o trigger dispara antes dos dados estarem guardados.
Se percebi quer fazer um insert numa tabela, e aos regsitos novos pretende
fazer uma actualização noutra tabela é isso?
por exemplo, se tiver uma tabela de nome testes, e sempre que ocorra uma
inserção quer
que essa mesma informação seja inserida na tabela trecebe.
deve criar uma função para trigger, do género;
"
CREATE OR REPLACE FUNCTION insert_testes()
RETURNS trigger AS
$BODY$
begin
insert into trecebe (id_novo,nome)
values (new.id, new.nome);
delete from testes where id = new.id;
return NULL;
end
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION insert_testes() OWNER TO postgres;
"
e um trigger do tipo:
"
CREATE TRIGGER altera_tabela
AFTER INSERT
ON testes
FOR EACH ROW
EXECUTE PROCEDURE insert_testes();
"
Notas: na função existe o prefixo new que se refer aos valores inseridos.
Caso fosse uma acção em tivesse alterado dados ( update ou delete) teria a
possibilidade
de gerir os novos valores "new" e oa antigos "old".
Para criar estas funções e trigger pode recorrer ao pgadmin, onde é um
pouco mais intuitivo.
Agora se pretende inserir um registo e fazer um update de seguida, ao mesmo
registo, das duas uma
ou ao fazer o insert insere logo os dados na totalidade, ou na função do
trigger inclui as
clausulas de actualização.
exemplo
No dia 14 de Novembro de 2011 11:28, Pedro Costa
<pedrocostaarma sapo.pt>escreveu:
> postgres, então para actualizar apenas os novos tenho de utilizar o update
> e o before?
>
> Obrigado pela ajuda
>
> Com os melhores cumprimentos,
>
> Pedro Costa
> Geógrafo
> Especializado em Sistemas de Informação Geográfica e Ordenamento do Território
>
>
>
> Em 14-11-2011 11:18, Jorge Penedo escreveu:
>
> Quando se define um trigger é indicado o evento after/before
> insert/delete/update
> o que pretende é algo do tipo
>
> after insert ou before insert
>
> onde é possível detectar todos os registo novos, inseridos numa tabela
>
> como não me indicou se está a trabalhar com sqlserver, postgres, oracle ou
> outro SGBD não poderei
> ser mais especifico.
>
> Qual o SGBD que está a usar?
>
> Cumprimentos
>
> Jorge Penedo
>
>
> No dia 14 de Novembro de 2011 11:05, Pedro Costa <pedrocostaarma sapo.pt>escreveu:
>
>> Pessoal alguém podia ajudar a formular um trigger que dispare quando
>> inserimos novos registos numa tabela?
>> Queria que executasse um update mas apenas nos registos novos inseridos
>> no momento, não em todos.
>> Alguém pode ajudar?
>>
>> Obrigado
>>
>> --
>> Com os melhores cumprimentos,
>>
>> Pedro Costa
>>
>>
>> _______________________________________________
>> Portugal mailing list
>> Portugal lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/portugal
>>
>
>
>
> _______________________________________________
> Portugal mailing listPortugal lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/portugal
>
>
> _______________________________________________
> Portugal mailing list
> Portugal lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
>
>
-------------- próxima parte ----------
Um anexo em HTML foi limpo...
URL: http://lists.osgeo.org/pipermail/portugal/attachments/20111114/7e11ab63/attachment.html
Mais informações acerca da lista Portugal