Unisci
Il prefisso Merge può essere aggiunto a qualsiasi istruzione LOAD o SELECT nello script per specificare che dovrebbe aggiungere record a un'altra tabella. Specifica anche che questa istruzione dovrebbe essere eseguita in un ricaricamento parziale.
Il tipico caso di utilizzo è quando si carica un registro delle modifiche e si desidera utilizzarlo per applicare inserts, updates e deletes a una tabella esistente.
Sintassi:
Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)
Durante un normale ricaricamento (non parziale), la costruzione Merge LOAD funzionerà come una normale istruzione Load ma con la funzionalità aggiuntiva di rimuovere i precedenti record obsoleti e i record contrassegnati per l'eliminazione. Il primo campo dell'istruzione di caricamento deve contenere informazioni sull'operazione: Insert, Update o Delete.
Per ciascun record caricato, l'identificatore record verrà confrontato con i precedenti record caricati e verrà mantenuto solo l'ultimo record (in base al numero di sequenza). Se l'ultimo record è contrassegnato con Delete, non ne verrà mantenuto nessuno.
Se viene utilizzato il prefisso Concatenate, o se esiste già una tabella con lo stesso set di campi, questa sarà la tabella pertinente da modificare. In caso contrario, il risultato della costruzione Merge LOAD verrà archiviato in una nuova tabella.
Se viene utilizzato il prefisso Concatenate, la tabella risultante avrà più campi rispetto al registro delle modifiche utilizzato come input per l'operazioneMerge.
Un ricaricamento parziale consentirà di ottenere lo stesso risultato di un ricaricamento completo. L'unica differenza sta nel fatto che la costruzione Merge LOAD non creerà mai una nuova tabella. Esiste sempre una tabella rilevante dalla precedente esecuzione script da modificare.
Se il registro delle modifiche caricato è un registro accumulato, ovvero contiene modifiche che sono già state caricate, il parametro SequenceNoVar può essere utilizzato in una clausola Where per limitare l'importo dei dati di input. La costruzione Merge LOAD può essere quindi regolata in modo da caricare solo i record in cui il campo SequenceNoField è maggiore di SequenceNoVar. Al completamento, la costruzione Merge LOAD assegnerà un nuovo valore a SequenceNoVar con il valore massimo visto nel campo SequenceNoField.
Argomenti:
Argomento | Descrizione |
---|---|
only | Un qualificatore opzionale che indica che l'istruzione deve essere eseguita solo durante i ricaricamenti parziali. Non deve essere considerato durante i normali ricaricamenti (non parziali). |
SequenceNoField | Il nome del campo contenente un timestamp o un numero di sequenza che definisce l'ordine delle operazioni. |
SequenceNoVar |
Il nome della variabile a cui viene assegnato il valore massimo per SequenceNoField della tabella unita. |
ListOfKeys | Un elenco separato da virgole di nomi di campo in cui si specifica la chiave primaria. |
operation | Il primo campo dell'istruzione LOAD deve contenere l'operazione: Sono accettati anche Insert, Update, or Delete. ‘i’, ‘u’ e ‘d’. |