Informazioni sugli script di installazione
Uno script di installazione può avere tutte le istruzioni SQL necessarie per creare l'applicazione oppure può essere uno script master che esegue altri script.
Un script è una serie di istruzioni SQL in un file il cui nome termina con .sql (ad esempio, create_app.sql). Quando si esegue uno script in un programma client, ad esempio SQL*Plus o SQL Developer, le istruzioni SQL vengono eseguite nell'ordine in cui vengono visualizzate nello script. Uno script le cui istruzioni SQL creano un'applicazione è denominato script di installazione.
Per distribuire un'applicazione, è necessario eseguire uno o più script di installazione nell'ambiente di distribuzione. Per le nuove applicazioni è necessario creare gli script di installazione. Per le applicazioni meno recenti, è possibile che esistano script di installazione, ma in caso contrario è possibile crearli.
Informazioni sulle istruzioni DDL e le dipendenze degli oggetti dello schema
Uno script di installazione contiene istruzioni DDL che creano oggetti dello schema e, facoltativamente, istruzioni INSERT che caricano i dati nelle tabelle create dalle istruzioni DDL. Per creare correttamente gli script di installazione e per eseguire più script di installazione nell'ordine corretto, è necessario comprendere le dipendenze tra gli oggetti dello schema dell'applicazione.
Se la definizione dell'oggetto A fa riferimento all'oggetto B, A dipende da B. Sarà quindi necessario creare B prima di creare A. Altrimenti l'istruzione che crea B non riesce oppure crea B con uno stato non valido, a seconda del tipo di oggetto.
Nelle applicazioni complesse, però, l'ordine di creazione degli oggetti non è quasi mai ovvio. In genere è preferibile rivolgersi al responsabile della progettazione del database o consultare il diagramma di progettazione per informazioni.
Vedere anche:
-
Oracle Database Development Guide per ulteriori informazioni sulle dipendenze degli oggetti dello schema
-
"Informazioni sulle istruzioni D DLL (Data Definition Language)"
Informazioni sulle istruzioni INSERT e i vincoli
Quando si esegue uno script di installazione contenente istruzioni INSERT, è necessario determinare se è possibile violare i vincoli quando i dati delle tabelle di origine (nell'ambiente di sviluppo) vengono inseriti in nuove tabelle nell'ambiente di distribuzione.
Per ogni tabella di origine dell'applicazione è necessario determinare se i vincoli possono essere violati durante l'inserimento di dati nella nuova tabella. Se possono esserlo, sarà necessario disabilitare i vincoli, quindi inserire i dati e infine provare a riabilitare i vincoli. Se un elemento dati viola un vincolo, non sarà possibile riabilitare tale vincolo finché l'elemento dati è stato corretto.
Se ci si limita all'inserimento di dati di ricerca nell'ordine corretto (come in "Caricamento dei dati"), i vincoli non vengono violati. pertanto non occorre disabilitarli.
Quando si inseriscono i dati da un'origine esterna (ad esempio un file, un foglio di calcolo o un'applicazione precedente) o da numerose tabelle con grandi quantità di dati dipendenti, disabilitare i vincoli prima di procedere all'inserimento.
È possibile disabilitare e riabilitare i vincoli nei modi riportati di seguito.
-
Uso di SQL Developer per disabilitare e riabilitare i vincoli uno alla volta.
-
Nel riquadro Connessioni, selezionare la tabella appropriata.
-
Nel riquadro con il nome della tabella, selezionare la scheda secondaria Vincoli.
-
Nell'elenco di tutti i vincoli della tabella, modificare
ENABLEDinDISABLED(o viceversa).
-
-
Modifica dello script di installazione, aggiungendo istruzioni SQL che disabilitano e riabilitano ogni vincolo.
-
Creazione di uno script SQL con istruzioni SQL che disabilitano e riabilitano ogni vincolo.
-
Ricerca dei vincoli nel dizionario dati di Oracle Database e creazione di uno script SQL con istruzioni SQL per disabilitare e riabilitare ogni vincolo.
Per trovare e abilitare i vincoli usati nelle tabelle EVALUATIONS, PERFORMANCE_PARTS e SCORES da "Creazione di tabelle", immettere nel foglio di lavoro le istruzioni riportate di seguito.
SELECT 'ALTER TABLE '|| TABLE_NAME || ' DISABLE CONSTRAINT '|| CONSTRAINT_NAME ||';' FROM user_constraints WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES'); SELECT 'ALTER TABLE '|| TABLE_NAME || ' ENABLE CONSTRAINT '|| CONSTRAINT_NAME ||';' FROM user_constraints WHERE table_name IN ('EVALUATIONS','PERFORMANCE_PARTS','SCORES');