<div>Creio que deve existir uma chave primária na tabela elementos, para o caso consideremos como ID</div>
<div> </div>
<div>ficaria algo do genero</div>
<div> </div>
<div><br> </div>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">CREATE OR REPLACE FUNCTION insert_elementos()</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>RETURNS trigger AS</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">$BODY$</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">begin</span></p>
<div style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>            </span></span></div>
<div style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>UPDATE elementos SET n_rua = (SELECT n_rua FROM ruas ORDER BY ST_Distance(ruas.the_geom, elementos.the_geom) ASC LIMIT 1)<br>
where id = <a href="http://new.id">new.id</a>;</span></span></div>
<div style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span></span></span> </div>
<div style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span></span></span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>            </span>return NULL;</span></div>

<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">end</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">$BODY$</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>LANGUAGE &#39;plpgsql&#39; VOLATILE</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>COST 100;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">ALTER FUNCTION insert_elementos() OWNER TO postgres;</span></p>
<p> </p>
<div>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">CREATE TRIGGER altera_tabela</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>AFTER INSERT</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>ON elementos</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>FOR EACH ROW</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>EXECUTE PROCEDURE insert_elementos();</span></p></div>
<div> </div>
<div> </div>
<div>neste exemplo o utilizador da base de dados é o &quot;postgres&quot;. o que deverá ser substituido pelo ower da tabela</div>
<div>se for esse o caso</div>
<div> </div>
<div> </div>
<div><br></div>
<div class="gmail_quote">No dia 14 de Novembro de 2011 11:50, Pedro Costa <span dir="ltr">&lt;<a href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div bgcolor="#FFFFFF" text="#000000">Jorge,<br><br>Obrigado por ajudar.<br><br>Eu quero que sempre que insiramos novos registos na tabela elementos este update dispare:<br><br>UPDATE elementos SET n_rua = (SELECT n_rua FROM ruas ORDER BY ST_Distance(ruas.the_geom, elementos.the_geom) ASC LIMIT 1)<br>
<br>O update é sobre a mesma tabela. Como formulo a função?<br><br>obrigado 
<div class="im"><br><pre cols="72">Com os melhores cumprimentos,

Pedro Costa
Geógrafo
Especializado em Sistemas de Informação Geográfica e Ordenamento do Território

</pre><br></div>Em 14-11-2011 11:46, Jorge Penedo escreveu: 
<div>
<div class="h5">
<blockquote type="cite"><br><br>
<div class="gmail_quote">No dia 14 de Novembro de 2011 11:44, Jorge Penedo <span dir="ltr">&lt;<a href="mailto:jorge.penedo@gmail.com" target="_blank">jorge.penedo@gmail.com</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div> </div>
<div>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.</div>
<div> </div>
<div>Já no before, o trigger dispara antes dos dados estarem guardados.</div>
<div> </div>
<div>Se percebi quer fazer um insert numa tabela, e aos regsitos novos pretende fazer uma actualização noutra tabela é isso?</div>
<div> </div>
<div> </div>
<div>por exemplo, se tiver uma tabela de nome testes, e sempre que ocorra uma inserção  quer</div>
<div>que essa mesma informação seja inserida na tabela trecebe.</div>
<div> </div>
<div>deve criar uma função para trigger, do género;</div>
<div> </div>
<div>&quot;</div>
<div>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">CREATE OR REPLACE FUNCTION insert_testes()</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>RETURNS trigger AS</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">$BODY$</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">begin</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>            </span>insert into trecebe (id_novo,nome)</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>                        </span>values (<a href="http://new.id/" target="_blank">new.id</a>, new.nome);</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>            </span>delete from testes where id = <a href="http://new.id/" target="_blank">new.id</a>;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>            </span>return NULL;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">end</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">$BODY$</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>LANGUAGE &#39;plpgsql&#39; VOLATILE</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>COST 100;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">ALTER FUNCTION insert_testes() OWNER TO postgres;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> &quot;</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></span> </p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">e um trigger do tipo: </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></span> </p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"> </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">&quot; </span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">CREATE TRIGGER altera_tabela</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>AFTER INSERT</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>ON testes</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>FOR EACH ROW</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"><span>  </span>EXECUTE PROCEDURE insert_testes();</span></p></div>
<div>&quot;</div>
<div> </div>
<div> </div>
<div>Notas: na função existe o prefixo new que se refer aos valores inseridos. </div>
<div>Caso fosse uma acção em tivesse alterado dados ( update ou delete) teria a possibilidade</div>
<div>de gerir os novos valores &quot;new&quot; e oa antigos &quot;old&quot;.</div>
<div> </div>
<div> </div>
<div>Para criar estas funções e trigger pode recorrer ao pgadmin, onde é um pouco mais intuitivo.</div>
<div> </div>
<div>Agora se pretende inserir um registo e fazer um update de seguida, ao mesmo registo, das duas uma</div>
<div>ou ao fazer o insert insere logo os dados na totalidade, ou na função do trigger inclui as</div>
<div>clausulas de actualização.</div>
<div> </div>
<div> </div>
<div>exemplo de update:</div></blockquote>
<div> </div>
<div> </div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div> update tabela set campo = novo_valor where id = <a href="http://new.id/" target="_blank">new.id</a></div></blockquote>
<div> </div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div> </div>
<div><br><br> </div>
<div class="gmail_quote">No dia 14 de Novembro de 2011 11:28, Pedro Costa <span dir="ltr">&lt;<a href="mailto:pedrocostaarma@sapo.pt" target="_blank">pedrocostaarma@sapo.pt</a>&gt;</span> escreveu: 
<div>
<div><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div bgcolor="#FFFFFF" text="#000000">postgres, então para actualizar apenas os novos tenho de utilizar o update e o before?<br><br>Obrigado pela ajuda<br><pre cols="72">Com os melhores cumprimentos,

Pedro Costa
Geógrafo
Especializado em Sistemas de Informação Geográfica e Ordenamento do Território

</pre><br>Em 14-11-2011 11:18, Jorge Penedo escreveu: 
<div>
<div>
<blockquote type="cite">
<div>Quando se define um trigger  é indicado o evento  after/before insert/delete/update</div>
<div>o que pretende é algo do tipo</div>
<div> </div>
<div>after insert ou before insert</div>
<div> </div>
<div>onde é possível detectar todos os registo novos, inseridos numa tabela</div>
<div> </div>
<div>como não me indicou se está a trabalhar com sqlserver, postgres, oracle ou outro SGBD não poderei</div>
<div>ser mais especifico.</div>
<div> </div>
<div>Qual o SGBD  que está  a usar?</div>
<div> </div>
<div>Cumprimentos</div>
<div> </div>
<div>Jorge Penedo</div>
<div> <br><br></div>
<div class="gmail_quote">No dia 14 de Novembro de 2011 11:05, Pedro Costa <span dir="ltr">&lt;<a href="mailto:pedrocostaarma@sapo.pt" target="_blank">pedrocostaarma@sapo.pt</a>&gt;</span> escreveu:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Pessoal alguém podia ajudar a formular um trigger que dispare quando inserimos novos registos numa tabela?<br>
Queria que executasse um update mas apenas nos registos novos inseridos no momento, não em todos.<br>Alguém pode ajudar?<br><br>Obrigado<span><font color="#888888"><br><br>-- <br>Com os melhores cumprimentos,<br><br>Pedro Costa<br>
<br><br>_______________________________________________<br>Portugal mailing list<br><a href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
</font></span></blockquote></div><br><br>
<fieldset></fieldset> <br><pre>_______________________________________________
Portugal mailing list
<a href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a>
</pre></blockquote></div></div></div><br>_______________________________________________<br>Portugal mailing list<br><a href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br></blockquote></div></div></div><br></blockquote></div><br><br>
<fieldset></fieldset> <br><pre>_______________________________________________
Portugal mailing list
<a href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a>
</pre></blockquote></div></div></div><br>_______________________________________________<br>Portugal mailing list<br><a href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br></blockquote></div><br>