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/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] <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

Responder a