<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Obrigado.<br>
<br>
Só tenho um problema. Eu tenho um id que é um serial criado sozinho
e dá erro assim...não tenho mais nenhuma chave..<br>
<pre class="moz-signature" 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 12:12, Jorge Penedo escreveu:
<blockquote
cite="mid:CAMWe5LrsRhv4e56+PFZGxGe3E-V3sq93inuCut2b=S_-VbgN+Q@mail.gmail.com"
type="cite">
<div>Os acessos são dados na databse, no seu limite à tabela.</div>
<div> </div>
<div>Os trigger's são sempre disparados quando ocorre a acção. Por
defeito é executado </div>
<div>por todos os utilizadores.</div>
<div> </div>
<div>a indicação do onwner não limita a sua execução<br>
<br>
</div>
<div class="gmail_quote">No dia 14 de Novembro de 2011 12:09,
Pedro Costa <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt">pedrocostaarma@sapo.pt</a>></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">Obrigado Jorge. Só tenho
uma dúvida, como faço para permitir vários utilizadores?
<div class="im"><br>
<br>
<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 12:07, Jorge Penedo escreveu:
<div>
<div class="h5">
<blockquote type="cite">
<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 moz-do-not-send="true"
href="http://new.id/" target="_blank">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 'plpgsql' 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
"postgres". 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"><<a
moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt"
target="_blank">pedrocostaarma@sapo.pt</a>></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><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>
<blockquote type="cite"><br>
<br>
<div class="gmail_quote">No dia 14 de
Novembro de 2011 11:44, Jorge Penedo <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:jorge.penedo@gmail.com"
target="_blank">jorge.penedo@gmail.com</a>></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>"</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
moz-do-not-send="true"
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 moz-do-not-send="true"
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
'plpgsql' 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"> "</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">" </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>"</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 "new" e
oa antigos "old".</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
moz-do-not-send="true"
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"><<a
moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt"
target="_blank">pedrocostaarma@sapo.pt</a>></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"><<a
moz-do-not-send="true"
href="mailto:pedrocostaarma@sapo.pt" target="_blank">pedrocostaarma@sapo.pt</a>></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
moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a><br>
<a
moz-do-not-send="true"
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 moz-do-not-send="true" href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org"
target="_blank">Portugal@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
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 moz-do-not-send="true" href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org"
target="_blank">Portugal@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal"
target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br>
</blockquote>
</div>
<br>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Portugal mailing list
<a moz-do-not-send="true" href="mailto:Portugal@lists.osgeo.org" target="_blank">Portugal@lists.osgeo.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/portugal"
target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
<br>
</blockquote>
</div>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Portugal mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/portugal">http://lists.osgeo.org/mailman/listinfo/portugal</a>
</pre>
</blockquote>
</body>
</html>