[Python] [Python e PostgreSQL] All'interno delle eccezioni, le transazioni si comportano diversamente?

Matteo Mattsteel Vitturi mattsteel a hotmail.it
Lun 25 Ott 2010 14:53:05 CEST


Daniele, 

> > L'alternativa potrebbe essere quella di disabilitare ...
> Creare la fkey non è gratis: il database deve fare un full scan della
> tabella per verificare che tutti i record verifichino la condizione,
> altrimenti si rifiuta di creare il vincolo. In più droppare/creare la fkey
> richiede lock che possono essere ostacolati da altre query concorrenti. La
> soluzione di Giovanni è quella giusta.

... hai perfettamente ragione: creare/riabilitare una foreign è molto dispendioso.

Il mio ragionamento voleva focalizzare il fatto che non è ragionevole 
modificare il valore di una chiave primaria, soprattutto quando questa è
 una chiave-fisica come un ID ma piuttosto converrebbe disporre di una colonna aggiuntiva che rappresenti la 
"chiave-logica" senza intrigarsi nelle chiavi-fisiche.


Credo però che la soluzione di Giovanni sia dello stesso tenore della mia, in quanto la modifica (ancorché in cascade) della primary-key di una riga di questo tipo richiede l'esame di tutte le foreign-key che referenziano la primary-key che sto alterando ed implica, quindi, tutti i lock del caso su tutte le tabelle coinvolte (quella della primary e quelle della foreign).

Speravo si notasse che la mia proposta era volutamente provocatoria... dato che il medesimo gruppetto di lock verrebbe applicato anche per la cancellazione.

:-)

 		 	   		  
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20101025/a49f681c/attachment.htm 


Maggiori informazioni sulla lista Python