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 list [email protected] http://lists.osgeo.org/mailman/listinfo/portugal
