Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Enforce foreign key - significato
martedì 20 marzo 2012 - 10.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
SQL Server 2008 R2
|
SQL Server 2008
|
SQL Server 2005
|
SQL Server Express
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
mar 20 mar 2012 - 10:18
Salve a tutti,
volevo sapere il significato di "Enforce foreign key" nella maschera 'Relationship' all'interno del design di una tabella in Sql Server Management Studio.
Grazie
Andrea Restucci - Web Developer
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
mar 20 mar 2012 - 13:44
Ciao,
serve per preservare la cosiddetta "Integrità referenziale" :
http://msdn.microsoft.com/it-it/library/aa292166
(v=vs.71).aspx
http://msdn.microsoft.com/it-it/library/ms177465.aspx
In pratica evita che i record di una tabella "figlio" diventino orfani di "padre"
Ciao!
My Blog...
http://blogs.dotnethell.it/Mark/
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
mar 20 mar 2012 - 14:00
scusa ma non mi è chiara la cosa, il comportamento di cui parli non si imposta già con le impostazioni che vengono subito dopo nella maschera in questione, e cioè:
Delete rule: No Action - Cascade - Set Null - Set Default
Update rule: No Action - Cascade - Set Null - Set Default
impostandoli a Cascade Evito che i record rimangano 'orfani'...
Andrea Restucci - Web Developer
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
mar 20 mar 2012 - 14:04
Ciao,
purtroppo non conosco le impostazioni a cui fai riferimento. Quando ho avuto bisogno di garantire l' IR ho sempre impostato le "foreign keys".
Ciao!
My Blog...
http://blogs.dotnethell.it/Mark/
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 20 mar 2012 - 15:07
>Delete rule: No Action - Cascade - Set Null - Set Default
>Update rule: No Action - Cascade - Set Null - Set Default
in realtà in base alle impostazioni decidi se prevedere orfani o meno
Se fai update o delete hai:
No Action
ti dà il normale errore se tenti di violare la FK (se cerchi di cancellare un padre, ad esempio)
Cascade
se aggiorno o cancello un padre, aggiorno o cancello il figlio sulla relazione
Set Null
metto null, se la tabella prevede che il campo è nullable
Set Default
metto il default se il campo prevede un valore di default
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
mar 20 mar 2012 - 15:37
a ok diciamo che puoi impostare il comportamento senza obbligatoriamente impostare su Yes 'Enforce foreign key'.
'Enforce foreign key' serve appunto ad evitare al sistema di effettuare l'operazione che renderebbe orfano il record.
In poche parole per l'integrità è opportuno lasciarlo su yes...
Andrea Restucci - Web Developer
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 21 mar 2012 - 09:45
>a ok diciamo che puoi impostare il comportamento senza obbligatoriamente
>impostare su Yes 'Enforce foreign key'.
>'Enforce foreign key' serve appunto ad evitare al sistema di
>effettuare l'operazione che renderebbe orfano il record.
>In poche parole per l'integrità è opportuno lasciarlo su yes...
Personalmente preferisco l'errore se cerco di eliminare un padre. L'eliminazione fisica non sempre è prevista in molti sistemi. Soprattutto per i dati storici o simili.
Preferisco fare soft delete, magari con un campo di stato, ma tenere quanto può sempre servirmi. E in caso di cancellazione fisica, preferisco l'errore per capire bene a cosa un'entità è legata, in modo da cambiare lo script di cancellazione sapendo quello che è stato eseguito.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !