Os acessos são dados na databse, no seu limite à tabela. Os trigger's são sempre disparados quando ocorre a acção. Por defeito é executado por todos os utilizadores.
a indicação do onwner não limita a sua execução No dia 14 de Novembro de 2011 12:09, Pedro Costa <[email protected]>escreveu: > Obrigado Jorge. Só tenho uma dúvida, como faço para permitir vários > utilizadores? > > > > 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 12:07, Jorge Penedo escreveu: > > Creio que deve existir uma chave primária na tabela elementos, para o caso > consideremos como ID > > ficaria algo do genero > > > > > CREATE OR REPLACE FUNCTION insert_elementos() > > RETURNS trigger AS > > $BODY$ > > > > begin > > UPDATE elementos SET n_rua = (SELECT n_rua FROM ruas ORDER BY > ST_Distance(ruas.the_geom, elementos.the_geom) ASC LIMIT 1) > where id = new.id; > > return NULL; > > end > > > > $BODY$ > > LANGUAGE 'plpgsql' VOLATILE > > COST 100; > > ALTER FUNCTION insert_elementos() OWNER TO postgres; > > > > CREATE TRIGGER altera_tabela > > AFTER INSERT > > ON elementos > > FOR EACH ROW > > EXECUTE PROCEDURE insert_elementos(); > > > neste exemplo o utilizador da base de dados é o "postgres". o que deverá > ser substituido pelo ower da tabela > se for esse o caso > > > > No dia 14 de Novembro de 2011 11:50, Pedro Costa > <[email protected]>escreveu: > >> 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] >> > 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, 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 de update: >>> >> >> >> >>> update tabela set campo = novo_valor where id = new.id >>> >> >> >>> >>> >>> >>> >>> No dia 14 de Novembro de 2011 11:28, Pedro Costa <[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/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 < >>>> [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] >>>>> http://lists.osgeo.org/mailman/listinfo/portugal >>>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Portugal mailing >>>> [email protected]http://lists.osgeo.org/mailman/listinfo/portugal >>>> >>>> >>>> _______________________________________________ >>>> Portugal mailing list >>>> [email protected] >>>> http://lists.osgeo.org/mailman/listinfo/portugal >>>> >>>> >>> >> >> >> _______________________________________________ >> Portugal mailing >> [email protected]http://lists.osgeo.org/mailman/listinfo/portugal >> >> >> _______________________________________________ >> Portugal mailing list >> [email protected] >> http://lists.osgeo.org/mailman/listinfo/portugal >> >> > > > _______________________________________________ > Portugal mailing > [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
