Eliminazione dei record del database

L'operazione di cancellazione consente di eliminare un record di database esistente.

L'istruzione DELET nel linguaggio RPG e l'istruzione DELETE nel linguaggio COBOL sono esempi di questa operazione. Per eliminare un record di database è necessario prima leggere e bloccare il record. Si blocca il record specificando l'opzione di aggiornamento su una qualsiasi delle operazioni di lettura elencate in Reading database records utilizzando un percorso di accesso alla sequenza di arrivo o Reading database records utilizzando un percorso di accesso alla sequenza con chiave. Le regole per bloccare i record per l'eliminazione e identificare quale record cancellare sono le stesse delle operazioni di aggiornamento.
Nota: Alcune lingue di alto livello non richiedono di leggere prima il record. Queste lingue consentono di specificare quale record si desidera cancellare sul comunicato di cancellazione. Ad esempio, il linguaggio RPG consente di eliminare un record senza prima leggerlo.

Quando un record di database viene cancellato, il record fisico viene contrassegnato come cancellato. Questo è vero anche se l'operazione di cancellazione avviene tramite un file logico. Un record cancellato non può essere letto. Il record viene rimosso da tutti i percorsi di accesso alla sequenza con chiave che contengono il record. Il numero di record relativo del record cancellato rimane lo stesso. Tutti gli altri numeri record relativi all'interno del membro del file fisico non cambiano.

Lo spazio utilizzato dal record cancellato rimane nel file, ma non viene riutilizzato fino a:
  • Il comando Riorganizza Physical File Member (RGZPFM) viene eseguito per comprimere e liberare questi spazi nel membro del file.
  • Il tuo programma scrive un record al file per numero di record relativo e il relativo numero di record utilizzato è uguale a quello del record cancellato.
Nota: Il sistema cerca di riutilizzare lo spazio record cancellato automaticamente se il file ha l'attributo spazio record cancellato di riutilizzo specificato.

Il sistema non consente di richiamare i dati per un record cancellato. È possibile, però, scrivere un nuovo record alla posizione (numero record relativo) associato ad un record cancellato. L'operazione di scrittura sostituisce il record cancellato con un nuovo record. Consulta la tua raccolta topic di lingua di alto livello per maggiori dettagli su come scrivere un record ad una posizione specifica (numero record relativo) nel file.

Per scrivere un record al numero di record relativo di un record cancellato, quel numero di record relativo deve esistere nel membro del file fisico. È possibile cancellare un record nel file utilizzando l'operazione di cancellazione nella lingua di alto livello. È anche possibile eliminare i record nel proprio file utilizzando il comando Inizializza File Member (INZPFM). Il comando INZPFM può inizializzare l'intero membro del file fisico a record cancellati.

Se il file da cui si sta eliminando ha un trigger di cancellazione associato ad esso, il programma trigger viene richiamato prima o dopo l'eliminazione del record. Se si desidera eliminare i record ed evitare di avere trigger di cancellazione eseguire, utilizzare l'istruzione TRUNCATE SQL con la clausola IGNORARE DELETE TRIGGER.

Se il file fa parte di una relazione di vincolo referenziale, potrebbe essere influenzata la cancellazione record.