Creative Saplings

UPDATE (Italiano)

Gennaio 29, 2021
No Comments

Scopo

Utilizzare l’istruzione UPDATE per modificare i valori esistenti in una tabella o nella tabella di base di una vista o la tabella principale di una vista materializzata.

Argomenti aggiuntivi

  • Prerequisiti

  • Sintassi

  • Semantica

  • Esempi

Prerequisiti

Per per aggiornare i valori in una tabella, la tabella deve essere nel tuo schema oppure devi avere il privilegio dell’oggetto UPDATE sulla tabella.

Per eseguire l’aggiornamento valori nella tabella di base di una vista:

  • Devi disporre del privilegio dell’oggetto UPDATE nella vista e

  • Chi possiede lo schema contenente la vista deve disporre del privilegio dell’oggetto UPDATE sulla tabella di base.

Il privilegio di sistema UPDATE ANY TABLE consente anche di aggiornare i valori in qualsiasi tavolo o nel tavolo base di qualsiasi visualizzazione.

È inoltre necessario disporre del SELECT privilegio dell’oggetto sull’oggetto che si desidera aggiornare se:

  • L’oggetto si trova su un database remoto o

  • Il parametro di inizializzazione SQL92_SECURITY è impostato su TRUE e l’operazione UPDATE fa riferimento a colonne della tabella, come le colonne in un where_clause.

Sintassi

update :: =

Descrizione dell’illustrazione update.gif

(DML_table_expression_clause :: =, update_set_clause :: =, where_clause :: =, return_clause :: =, error_logging_clause :: =)

DML_table_expression_clause :: =

Descrizione dell’illustrazione DML_table_expression_clause.gif

(subquery :: = – parte di SELECT, subquery_restriction_clause :: =, table_collection_expression :: =)

subquery_restriction_clause :: =


Descrizione dell’illustrazione subquery_restriction_clause.gif

table_collection_expression :: =


Descrizione dell’illustrazione table_collection_expression.gif

update_set_clause :: =


Descrizione dell’illustrazione update_set_clause. gif

where_clause :: =


Descrizione dell’illustrazione where_clause.gif

return_clause :: =


Descrizione dell’illustrazione return_clause.gif

error_logging_clause :: =

Descrizione dell’illustrazione error_logging_clause.gif

Semantica

suggerimento

Specifica un commento che passa le istruzioni all’ottimizzatore sulla scelta di un piano di esecuzione per l’istruzione.

Puoi inserire un suggerimento parallelo immediatamente dopo la parola chiave UPDATE per parallelizzare entrambi scansione sdraiata e UPDATE operazioni.

Vedi anche:

  • Guida all’ottimizzazione delle prestazioni del database Oracle e ” Using Hints “per la sintassi e la descrizione dei suggerimenti

  • Oracle Database Performance Tuning Guide e Oracle Database Concepts per informazioni dettagliate sul DML parallelo

DML_table_expression_clause

La clausola ONLY si applica solo alle viste. Specifica la sintassi della ONLY se la vista nella clausola UPDATE è una vista che appartiene a una gerarchia e non desideri aggiornare le righe da nessuna delle sue sottoviste.

Vedi anche:

“Restrictions on the DML_table_expression_clause” e “Aggiornamento di una tabella: esempi”

schema

Specificare lo schema contenente l’oggetto da aggiornare. Se ometti schema, il database presume che l’oggetto sia nel tuo schema.

table | visualizza | materialized_view | subquery

Specificare il nome della tabella, vista, vista materializzata o le colonne restituite da una sottoquery da aggiornare. L’emissione di un’istruzione UPDATE su una tabella attiva qualsiasi UPDATE trigger associato alla tabella.

  • Se specifichi view, il database aggiorna la tabella di base della vista.Non è possibile aggiornare una vista tranne che con INSTEAD OF se la query di definizione della vista contiene uno dei seguenti costrutti:

Un operatore di gruppo ADISTINCToperatore Una funzione aggregata o analitica AGROUPBY,ORDERBY,MODEL,CONNECTBYoSTARTWITHclausola Un’espressione di raccolta in unaSELECTlist Una sottoquery in unSELECTlist Una sottoquery designataWITH READ ONLYsi unisce, con alcune eccezioni , come documentato nella Guida di Oracle Database Administrator

  • Non è possibile aggiornare più di una tabella di base tramite una vista.

  • Inoltre, se il la visualizzazione è stata creata con WITH CHECK , puoi aggiornare la vista solo se i dati risultanti soddisfano la query di definizione della vista.

  • Se table o la tabella di base di view contiene una o più colonne dell’indice di dominio, quindi questa istruzione esegue la routine di aggiornamento del tipo di indice appropriata.

  • Non è possibile aggiornare le righe in una vista materializzata di sola lettura. Se aggiorni le righe in una vista materializzata scrivibile, il database aggiorna le righe dalla tabella contenitore sottostante. Tuttavia, gli aggiornamenti vengono sovrascritti alla successiva operazione di aggiornamento. Se aggiorni le righe in una vista materializzata aggiornabile che fa parte di un gruppo di viste materializzate, il database aggiorna anche le righe corrispondenti nella tabella principale.

Vedi Inoltre:

  • Oracle Data Cartridge Developer “s Guide per ulteriori informazioni sulle routine di aggiornamento indextype

  • CREATE MATERIALIZED VIEW per informazioni su creazione di viste materializzate aggiornabili

PARTITION | SUBPARTITION

Specifica il nome della partizione o della sottopartizione all’interno di table destinato agli aggiornamenti. Non è necessario specificare il nome della partizione durante l’aggiornamento dei valori in una tabella partizionata. Tuttavia, in alcuni casi, specificare il nome della partizione può essere più efficiente di un where_clause complicato .

Vedi anche:

“Riferimento a tabelle e indici partizionati” e “Aggiornamento di una partizione: esempio”

dblink

Specifica un nome completo o parziale di un collegamento al database a un database remoto dove t l’oggetto si trova. È possibile utilizzare un collegamento al database per aggiornare un oggetto remoto solo se si utilizza la funzionalità distribuita di Oracle Database.

Se si omette dblink,, il database presume che l’oggetto sia sul database locale.

Vedi anche:

“Riferimento a oggetti in database remoti” per informazioni su come fare riferimento a collegamenti a database

subquery_restriction_clause

Utilizza subquery_restriction_clause per limitare la sottoquery in uno dei seguenti modi:

CON SOLO LETTURA Specifica WITH READ ONLY per indicare che la tabella o la vista non possono essere aggiornate.

CON OPZIONE DI CONTROLLO Specifica WITH CHECK OPTION per indicare che Oracle Database vieta qualsiasi modifica alla tabella o alla vista che produrrebbe righe che non sono incluse nella sottoquery. Quando viene utilizzata nella sottoquery di un’istruzione DML, puoi specificare questa clausola in una sottoquery nella clausola FROM ma non nella sottoquery nella WHERE clausola.

Vincolo CONSTRAINT Specifica il nome del vincolo CHECK OPTION. Se ometti questo identificatore, Oracle assegna automaticamente al vincolo un nome nella forma SYS_C n, dove n è un numero intero che rende il nome del vincolo univoco all’interno del database.

Vedere anche:

“Utilizzo della clausola WITH CHECK OPTION: esempio”

table_collection_expression

Il table_collection_expression consente di informare Oracle che il valore di collection_expression deve essere trattato come una tabella ai fini delle operazioni di query e DML. collection_expression può essere una sottoquery, una colonna, una funzione o un costruttore di raccolte. Indipendentemente dalla sua forma, deve restituire un valore di raccolta, ovvero un valore il cui tipo è tabella nidificata o varray. Questo processo di estrazione degli elementi di una raccolta è chiamato raccolta senza test.

Il segno più (+) opzionale è rilevante se stai unendo l’espressione TABLE con il genitore tavolo. Il segno + crea un join esterno dei due, in modo che la query restituisca righe dalla tabella esterna anche se l’espressione di raccolta è nulla.

Nota:

Nelle versioni precedenti di Oracle, quando collection_expression era una sottoquery, table_collection_expression era espresso come THE subquery.Tale utilizzo è ora deprecato.

Puoi utilizzare un table_collection_expression per aggiornare le righe in una tabella in base alle righe di un’altra tabella. Ad esempio, potresti raggruppare quattro tabelle delle vendite trimestrali in una tabella delle vendite annuali.

t_alias

Specifica un nome di correlazione (alias) per la tabella, la vista o la sottoquery a cui fare riferimento altrove nella dichiarazione. Questo alias è richiesto se DML_table_expression_clause fa riferimento a qualsiasi attributo di tipo di oggetto o metodo di tipo di oggetto.

Vedi anche:

“Aggiornamento correlato: esempio “

Restrizioni su DML_table_expression_clause Questa clausola è soggetta alle seguenti limitazioni:

  • Non è possibile eseguire questa istruzione se table o la tabella di base di view contiene gli indici di dominio contrassegnati con IN_PROGRESS o FAILED.

  • Non puoi inserire in una partizione se le partizioni di indice interessate sono contrassegnate con UNUSABLE.

  • Non è possibile specificare order_by_clause nella sottoquery di DML_table_expression_clause.

  • Se specifichi un indice, una partizione di indice o una partizione di indice contrassegnata come UNUSABLE, l’istruzione UPDATE fallirà a meno che il SKIP_UNUSABLE_INDEXES parametro di sessione è stato impostato su TRUE.

Vedi anche:

ALTER SESSION per informazioni su SKIP_UNUSABLE_INDEXES parametro di sessione

update_set_clause

update_set_clause consente di impostare i valori delle colonne.

colonna

Specifica il nome di una colonna dell’oggetto che deve essere aggiornato. Se ometti una colonna della tabella da update_set_clause, il valore di quella colonna rimane invariato.

Se column si riferisce a un attributo di un oggetto LOB, quindi è necessario prima inizializzarlo con un valore vuoto o null. Non puoi aggiornarlo con un valore letterale. Inoltre, se si aggiorna un valore LOB utilizzando un metodo diverso da un’istruzione SQL UPDATE diretta, è necessario prima bloccare la riga contenente il LOB. Vedere for_update_clause per ulteriori informazioni.

Se column fa parte della chiave di partizionamento di una tabella partizionata, UPDATE fallirà se si modifica un valore nella colonna che sposterebbe la riga in una partizione o sottopartizione diversa, a meno che non si abiliti lo spostamento della riga. Fare riferimento a row_movement_clause di CREATE TABLE o ALTER TABLE.

Inoltre, se column fa parte del chiave di partizionamento di una tabella con partizioni di elenco, UPDATE avrà esito negativo se specifichi un valore per la colonna che non esiste già in partition_value elenco di una delle partizioni.

sottoquery

Specifica una sottoquery che restituisca esattamente una riga per ogni riga aggiornata.

  • Se specifichi solo una colonna nella update_set_clause, la sottoquery può restituire un solo valore.

  • Se specifichi più colonne nella update_set_clause, la sottoquery deve restituire tanti valori quante sono le colonne specificate.

  • Se la sottoquery non restituisce righe, allora il alla colonna viene assegnato un valore nullo.

  • Se questo subquery si riferisce a oggetti remoti, il UPDATE può essere eseguita in parallelo fintanto che il file referen ce non torna indietro a un oggetto sul database locale. Tuttavia, se subquery in DML_table_expression_clause si riferisce a oggetti remoti, allora UPDATE l’operazione verrà eseguita in serie senza notifica.

Puoi utilizzare flashback_query_clause all’interno della sottoquery per aggiornare table con dati passati. Fare riferimento alla flashback_query_clause di SELECT per ulteriori informazioni su questa clausola.

Vedere anche:

  • SELEZIONA e “Uso di sottoquery”

  • parallel_clause nella documentazione CREATE TABLE

expr

Specifica un’espressione che si risolve nel nuovo valore assegnato alla colonna corrispondente.

Vedi anche:

Capitolo 6, “Espressioni” per la sintassi di expr e “Aggiornamento di una tabella oggetto: esempio”

DEFAULT Specifica DEFAULT per impostare la colonna sul valore precedentemente specificato come predefinito valore per la colonna. Se non è stato specificato alcun valore predefinito per la colonna corrispondente, il database imposta la colonna su null.

Limitazione all’aggiornamento ai valori predefiniti Non è possibile specificare DEFAULT se stai aggiornando una vista.

Clausola VALUE

La clausola VALUE ti consente di specificare l’intera riga di una tabella di oggetti.

Restrizione sulla clausola VALUE È possibile specificare questa clausola solo per una tabella di oggetti.

Nota:

se si inseriscono stringhe letterali in una colonna RAW, durante le query successive, Oracle Database eseguirà una scansione completa della tabella invece di utilizzare qualsiasi indice che potrebbe esistere nella colonna RAW.

Vedi anche:

“Aggiornamento di una tabella oggetto: esempio”

where_clause

where_clause ti consente di limitare le righe aggiornate a quelle per le quali condition è vero. Se ometti questa clausola, il database aggiorna tutte le righe nella tabella o nella vista. Fare riferimento al Capitolo 7, “Condizioni” per la sintassi di condition.

Il where_clause determina le righe in quali valori vengono aggiornati. Se non specifichi where_clause, tutte le righe vengono aggiornate. Per ogni riga che soddisfa where_clause, le colonne a sinistra dell’operatore di uguaglianza (=) in update_set_clause sono impostate sui valori delle espressioni corrispondenti a destra dell’operatore. Le espressioni vengono valutate quando la riga viene aggiornata.

return_clause

La clausola return recupera le righe interessate da un’istruzione DML. Puoi specificare questa clausola per le tabelle e le viste materializzate e per le viste con una singola tabella di base.

Quando si opera su una singola riga, un’istruzione DML con un returning_clause può recuperare le espressioni di colonna utilizzando la riga interessata, rowid e REFs nella riga interessata e memorizzarle nelle variabili host o nelle variabili PL / SQL.

Quando si opera su più righe, un’istruzione DML con returning_clause memorizza i valori di espressioni, rowid e REFs che coinvolgono le righe interessate negli array di associazione.

expr Ogni elemento nell’elenco expr deve essere una sintassi di espressione valida.

INTO Il INTO indica che i valori delle righe modificate devono essere memorizzati nelle variabili specificate in data_item list.

data_item Each data_item è una variabile host o una variabile PL / SQL che memorizza il valore expr recuperato.

Per ogni espressione nell’elenco RETURNING, devi specificare una variabile PL / SQL compatibile con il tipo o una variabile host corrispondente nella INTO elenco.

Restrizioni Le seguenti limitazioni si applicano alla clausola RETURNING:

  • Il expr è limitato come segue:

    • Per UPDATE e DELETE istruzioni ogni expr deve essere un’espressione semplice o un’espressione di funzione aggregata a set singolo. Non puoi combinare espressioni semplici ed espressioni di funzioni aggregate a set singolo nello stesso returning_clause. Per le istruzioni INSERT, ogni expr deve essere un’espressione semplice. Le funzioni aggregate non sono supportate in un’istruzione INSERT RETURNING.

    • Single- le espressioni di funzioni aggregate non possono includere la parola chiave DISTINCT.

  • Se expr contiene una colonna di chiave primaria o un’altra colonna NOT NULL, quindi l’istruzione di aggiornamento non riesce se la tabella ha un trigger BEFORE UPDATE definito su di esso.

  • Non è possibile specificare returning_clause per un inserimento multitabile.

  • Non puoi utilizzare questa clausola con DML parallelo o con oggetti remoti.

  • Non è possibile recuperare i tipi LONG con questa clausola.

  • Non è possibile specificare questa clausola per una vista sulla quale è stato definito un trigger INSTEAD OF.

Vedi anche :

Utente PL / SQL ” s Guida e riferimento per informazioni sull’utilizzo della BULK COLLECT clausola per restituire più valori alle variabili di raccolta

error_logging_clause

L’errore_logging_clause ha lo stesso comportamento in un’istruzione UPDATE come in un’istruzione INSERT. Per ulteriori informazioni, fare riferimento all’istruzione INSERT error_logging_clause.

Vedi anche:

“Inserimento in una tabella con registrazione degli errori: esempio”

Esempi

Aggiornamento di una tabella: esempi Quanto segue la dichiarazione assegna commissioni nulle a tutti i dipendenti con il lavoro SH_CLERK:

UPDATE employees SET commission_pct = NULL WHERE job_id = "SH_CLERK";

La seguente dichiarazione promuove Douglas Grant a manager del Dipartimento 20 con un aumento di $ 1.000:

UPDATE employees SET job_id = "SA_MAN", salary = salary + 1000, department_id = 120 WHERE first_name||" "||last_name = "Douglas Grant"; 

La seguente dichiarazione aumenta lo stipendio di un dipendente nel employees tabella sul remote database:

UPDATE employees@remote SET salary = salary*1.1 WHERE last_name = "Baer";

Il prossimo esempio mostra i seguenti costrutti sintattici del UPDATE:

  • Entrambe le forme di update_set_clause insieme in una singola istruzione

  • Una sottoquery correlata

  • A where_clause per limitare le righe aggiornate

L’istruzione UPDATE precedente esegue le seguenti operazioni:

  • Aggiorna solo i dipendenti che lavorano a Ginevra o Monaco (località 2900 e 2700)

  • Imposta department_id per questi dipendenti al department_id corrispondente a Bombay (location_id 2100)

  • Imposta lo stipendio di ogni dipendente a 1,1 volte lo stipendio medio del proprio dipartimento

  • Imposta la commissione di ogni dipendente a 1,5 volte la commissione media del proprio dipartimento

Aggiornamento di una partizione: esempio Il seguente esempio aggiorna i valori in una singola partizione della tabella sales:

UPDATE sales PARTITION (sales_q1_1999) s SET s.promo_id = 494 WHERE amount_sold > 1000;

Aggiornamento di una tabella di oggetti: esempio La seguente istruzione crea due tabelle di oggetti, people_demo1 e people_demo2 , dell’oggetto people_typ creato nelle raccolte di tabelle: esempi. L’esempio mostra come aggiornare una riga di people_demo1 selezionando una riga da people_demo2:

L’esempio utilizza il VALUE funzione di riferimento all’oggetto sia nella clausola SET che nella sottoquery.

Aggiornamento correlato: esempio Per un esempio che utilizza una sottoquery correlata per aggiornare le righe della tabella nidificata, fare riferimento a “Raccolte di tabelle: esempi”.

Utilizzo della clausola RETURNING durante UPDATE: esempio L’esempio seguente restituisce i valori dalla riga aggiornata e memorizza il risultato in PL / Variabili SQL bnd1, bnd2, bnd3:

Il L’esempio seguente mostra che è possibile specificare una funzione di aggregazione a set singolo nell’espressione della clausola di restituzione:

UPDATE employees SET salary = salary * 1.1 WHERE department_id = 100 RETURNING SUM(salary) INTO :bnd1;

Articles
Previous Post

Acquista nei negozi online negli Stati Uniti e spediamo in India in 2-4 giorni!

Next Post

Razze di cani blu: cosa li rende così belli?

Lascia un commento Annulla risposta

Articoli recenti

  • Best Photography Schools In The World, 2020
  • I cittadini sovrani portano la loro filosofia antigovernativa sulle strade
  • Guida ai costi di riparazione dello stucco
  • Muckrakers (Italiano)
  • Oncologia di precisione

Archivi

  • Febbraio 2021
  • Gennaio 2021
  • Dicembre 2020
  • Novembre 2020
  • Ottobre 2020
  • Settembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.