Come aggiornare un valore di chiave primaria

May 17

Come aggiornare un valore di chiave primaria


I database sono impostati per far rispettare l'integrità dei dati. Ciò significa che i campi chiave primaria che identificano in modo univoco un record siano protetti. Essi sono modificabili, ma il software di database si rifiuteranno di consentire un aggiornamento se i record coinvolti fanno riferimento i dati in altre tabelle. Per esempio, se si dispone di un identificatore univoco per una tabella di inventario e la vostra tavola fattura ha elementi da tale inventario, la banca dati in genere non consentono di eliminare o aggiornare il valore della chiave di inventario. Questo è il motivo per cui non si dovrebbe mai usare un vero e proprio pezzo di dati per una chiave, piuttosto sistema qualcosa generato.

istruzione

1 Aggiornare il valore che si desidera modificare. Se nessun altro tabelle di riferimento di esso, il database può consentire di aggiornarlo. In caso contrario, si otterrà un errore e può proseguire. Se è possibile aggiornare il valore, si è fatto.

2 Creare un nuovo record con un inserto. Utilizzare il valore che si desidera modificare.

3 Aggiornare i record che fanno riferimento il valore della chiave che si desidera modificare il nuovo valore che avete appena creato.

4 Eliminare il record originale. Con i record che fanno riferimento ora aggiornato, non sarà più riferimento la vecchia chiave.

Consigli e avvertenze

  • Verificare se il campo viene generato. Se si proviene da una fonte generata, allora può essere possibile aggiornarlo senza creare il caos. Si potrebbe finire per la creazione di chiavi duplicate, tali da inficiare tutti i dati. Esaminare la logica utilizzata per generare la chiave prima di procedere. Potrebbe non essere possibile fare ciò che si vuole.
  • Cambiare le chiavi primarie è sempre pericoloso. Controllare e ricontrollare il vostro SQL prima di eseguirlo. E 'molto possibile creare un serio problema con le chiavi duplicate, o distruggendo record non hai intenzione di cancellare.