[Portugal] trigger que actualize apenas registos novos
Jorge Penedo
jorge.penedo gmail.com
Segunda-Feira, 14 de Novembro de 2011 - 06:46:03 EST
No dia 14 de Novembro de 2011 11:44, Jorge Penedo
<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, 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 <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/bd7b60d5/attachment-0001.html
Mais informações acerca da lista Portugal