<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Daniele, <br><br>> > L'alternativa potrebbe essere quella di disabilitare ...<br>> Creare la fkey non è gratis: il database deve fare un full scan della<br>> tabella per verificare che tutti i record verifichino la condizione,<br>> altrimenti si rifiuta di creare il vincolo. In più droppare/creare la fkey<br>> richiede lock che possono essere ostacolati da altre query concorrenti. La<br>> soluzione di Giovanni è quella giusta.<br><br>... hai perfettamente ragione: creare/riabilitare una foreign è molto dispendioso.<br><br>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.<br>
<br>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).<br><br>Speravo si notasse che la mia proposta era volutamente provocatoria... dato che il medesimo gruppetto di lock verrebbe applicato anche per la cancellazione.<br><br>:-)<br><br>                                            </body>
</html>