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 <[email protected] <mailto:[email protected]>> 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 <[email protected] <mailto:[email protected]>> 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/updateo 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 <[email protected] <mailto:[email protected]>> 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 [email protected] <mailto:[email protected]> http://lists.osgeo.org/mailman/listinfo/portugal _______________________________________________ Portugal mailing list [email protected] <mailto:[email protected]> http://lists.osgeo.org/mailman/listinfo/portugal_______________________________________________ Portugal mailing list [email protected] <mailto:[email protected]> http://lists.osgeo.org/mailman/listinfo/portugal _______________________________________________ Portugal mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/portugal
_______________________________________________ Portugal mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/portugal
