ehm, non sono sicuro di aver capito l'esigenza iniziale<br><br>forse il problema nasce dal volere usare l'identificativo numerico del ddt anche come chiave primaria<br><br>...perché non tenere due campi distinti?<br>


<br>siano essi: id (vera e propria chiave primaria, tendenzialmente trasparente all'utente), numero_documento (il numero che l'operatore vede e che viene poi stampato sui report cartacei: quest'ultimo è quello che l'operatore considera "numero del ddt")<br>


<br>in questo modo la chiave primaria id la puoi inizializzare/alimentare subito con una sequence senza bisogno di lock o altro (meccanismo semplice ed efficente, trovi un sacco di doc ...io ho presente oracle ma immagino che in posgress il giro sia simile) <br>


<br>il ddt nasce in bozza, e tale rimane fintanto che l'operatore conferma i dati e "registra" il ddt, solo a quel punto il ddt viene "battezzato" e riceve un numero_documento univoco<br><br>in questo modo non hai il problema di assegnare degli id e poi doverli revocare (e recuperare/riutilizzare) perché l'operatore cambia idea<br>

<br>L'unico problema che ti rimane è valorizare il campo numero_documento una volta che l'operatore ha confermato. Beh, qui puoi usare il giro che ti è già stato detto:<br> * lock tabella<br> * update set numero_documento=(select max(numero_documento)+1) where id = <br>

 * commit<br>
<br>Da notare che il campo numero_documento può essere tranquillamente classificato come 
unique su db. Infatti l'rdbms garantisce che il vincolo sia soddisfatto 
esclusivamente sulle righe valorizzata. Questo significa che puoi 
permetterti di tenere un numero arbitrario di ddt in bozza senza 
fastidi. Sarà l'rdbms poi a garantire che se hanno un valore allora 
questo è univoco (anche qui ho presente oracle ma immagino che per 
posgress sia lo stesso)<br><br>spero di essere stato chiaro, altrimenti chiedi<br>Marco<br><br><div class="gmail_quote">2011/5/17 Daniele Varrazzo <span dir="ltr"><<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>></span><br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div>On Tue, 17 May 2011 08:32:46 +0200 (CEST), "<a href="mailto:marcofoc@libero.it" target="_blank">marcofoc@libero.it</a>"<br>
<<a href="mailto:marcofoc@libero.it" target="_blank">marcofoc@libero.it</a>> wrote:<br>
> La notte mi sa che ha portato consiglio.<br>
<br>
</div>[snip di deliri con 3 tabelle da tenere in sync]<br>
<br>
Meglio se mangi più leggero a cena.<br>
<div><br>
<br>
--<br>
Daniele Varrazzo - Develer S.r.l.<br>
<a href="http://www.develer.com" target="_blank">http://www.develer.com</a><br>
_______________________________________________<br>
</div><div><div></div><div>Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</div></div></blockquote></div><br>