[Portugal] trigger que actualize apenas registos novos
Pedro Costa
pedrocostaarma sapo.pt
Segunda-Feira, 14 de Novembro de 2011 - 06:50:27 EST
Jorge,
Obrigado por ajudar.
Eu quero que sempre que insiramos novos registos na tabela elementos
este update dispare:
UPDATE elementos SET n_rua = (SELECT n_rua FROM ruas ORDER BY
ST_Distance(ruas.the_geom, elementos.the_geom) ASC LIMIT 1)
O update é sobre a mesma tabela. Como formulo a função?
obrigado
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:46, Jorge Penedo escreveu:
>
>
> No dia 14 de Novembro de 2011 11:44, Jorge Penedo
> <jorge.penedo gmail.com <mailto:jorge.penedo gmail.com>> escreveu:
>
> 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 <http://new.id/>, new.nome);
>
> delete from testes where id = new.id <http://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 de update:
>
> update tabela set campo = novo_valor where id = new.id
> <http://new.id>
>
>
>
> No dia 14 de Novembro de 2011 11:28, Pedro Costa
> <pedrocostaarma sapo.pt <mailto: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 <mailto: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 <mailto:Portugal lists.osgeo.org>
>> http://lists.osgeo.org/mailman/listinfo/portugal
>>
>>
>>
>>
>> _______________________________________________
>> Portugal mailing list
>> Portugal lists.osgeo.org <mailto:Portugal lists.osgeo.org>
>> http://lists.osgeo.org/mailman/listinfo/portugal
>
> _______________________________________________
> Portugal mailing list
> Portugal lists.osgeo.org <mailto:Portugal lists.osgeo.org>
> http://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/ea3c107e/attachment.html
Mais informações acerca da lista Portugal