In Oracle, una tabella nidificata può essere archiviata come colonna del database. Ciò significa che l'intera tabella nidificata è contenuta in una riga della tabella del database e ogni riga del database può contenere una tabella nidificata diversa. Per memorizzare una tabella nidificata nel database, è necessario utilizzare CREATE TYPE
per creare il tipo di tabella nidificata, anziché un'istruzione di tipo in un blocco PL/SQL.
Usando CREATE TYPE
, il tipo viene archiviato nel dizionario dei dati ed è quindi disponibile per l'uso come tipo di colonna. L'esempio seguente illustra come creare una tabella nidificata come colonna del database.
Oracle PL/SQL - Creazione di tabelle annidate nel database
CREATE TYPE BookObj AS OBJECT ( title VARCHAR2(40), author VARCHAR2(40), catalog_number NUMBER(4) ); CREATE TYPE BookList AS TABLE OF BookObj; CREATE TABLE course_material ( department CHAR(3), course NUMBER(3), required_reading BookList ) NESTED TABLE required_reading STORE AS required_tab;
Ci sono diverse cose da notare sull'elenco sopra e sulla creazione di tabelle nidificate nel database:
- Il tipo di tabella è progettato con
CREATE TYPE
istruzione in modo che possa essere memorizzata nel dizionario dei dati. - Il tipo di tabella viene utilizzato nella definizione della tabella, proprio come un oggetto colonna.
- Per ogni tabella nidificata in una determinata tabella del database, il
NESTED TABLE
è richiesta la clausola. Questa clausola indica il nome della tabella store.
Una tabella store è una tabella generata dal sistema che viene utilizzata per archiviare i dati effettivi nella tabella nidificata. Questi dati non vengono archiviati in linea con il resto delle colonne della tabella; viene memorizzato separatamente.
La required_reading
la colonna memorizzerà un REF
nella required_tab
tabella, dove verrà archiviato l'elenco dei libri. Per ogni riga di course_material
, required_reading contiene un REF alle righe corrispondenti in required_tab.
NOTA
La tabella del negozio (required_tab
nell'esempio precedente) può esistere in un altro schema e può avere parametri di archiviazione diversi dalla tabella principale. La tabella store può essere descritta ed esiste in user_tables
, ma non è possibile accedervi direttamente.
Se si tenta di interrogare o modificare direttamente la tabella di archiviazione, verrà visualizzato l'errore Oracle "ORA-22812:impossibile fare riferimento alla tabella di archiviazione della colonna della tabella nidificata". Il contenuto della tabella store viene manipolato tramite SQL sulla tabella principale.
Vedi anche:
- Oracle PL/SQL – Raccolte (tabelle nidificate)
-
Disaster Recovery per il cluster Galera distribuito su un cloud ibrido
-
Controllo del failover della replica per MySQL e MariaDB con script pre o post failover
-
Le 50 principali domande per l'intervista su SQL Server che devi preparare nel 2022
-
Giornata mondiale del backup:4 fatti interessanti sulla perdita di dati da sapere