Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Vincoli d'integrità referenziale

    Salve. Qualcuno può dirmi qual è la differenza tra NO ACTION e RESTRICT quando specifico cosa fare al momento della cancellazione o aggiornamento di un record padre?

  2. #2

    Re: Vincoli d'integrità referenziale

    Originariamente inviato da Dreamer89
    Salve. Qualcuno può dirmi qual è la differenza tra NO ACTION e RESTRICT quando specifico cosa fare al momento della cancellazione o aggiornamento di un record padre?
    banalmente:

    NO ACTION non controlla la corrispondenza del reference ed esegue quanto chiesto cioe' non controlla la relazione tra padre e figlio.

    RESTRICT invece fa questo controllo di congruenza e impedisce di modificare la relazione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Non mi è chiara la cosa... avrei bisogno di un esempio:

    Ho una tabella "Libri" che è figlia della tabella "Editori":

    Tabella con NO ACTION:
    codice:
    CREATE TABLE Libri
    (
       idLibro INT,
       idEditore INT,
       ...
       PRIMARY KEY(idLibro),
       FOREIGN KEY(idLibro) REFERENCES Editori(idEditore) ON DELETE NO ACTION
    )
    e tabella con RESTRICT

    codice:
    CREATE TABLE Libri
    (
       idLibro INT,
       idEditore INT,
       ...
       PRIMARY KEY(idLibro),
       FOREIGN KEY(idLibro) REFERENCES Editori(idEditore) ON DELETE RESTRICT
    )
    Cosa succede se un elemento padre della tabella Editori viene eliminato nei due casi?

  4. #4
    nel primo caso NO ACTION accetterebbe passivamente che tu rimuova l'editore associato al libro.

    nel secondo caso siccome il libro ha un riferimento con un editore, non ti verrebbe permesso di rimuovere l'editore se non rimuovi prima il libro.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    19
    scusate se mi intrometto, quindi con la clausola RESTRICT andrebbero rimossi prima tutti i libri, giusto?

  6. #6
    Originariamente inviato da smn
    scusate se mi intrometto, quindi con la clausola RESTRICT andrebbero rimossi prima tutti i libri, giusto?
    libri / editori / libri /editori ... diciamo per capirci meglio: id_padre e id_figlio.

    non puoi eliminare un id_padre se esiste ancora un id_figlio associato all'id_padre da rimuovere. Integrita' referenziale.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Ok grazie mille ^^

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.