PÄIVITÄ
Tarkoitus
Käytä UPDATE -käskyä muuttaaksesi olemassa olevia arvoja taulukossa tai näkymän perustaulussa tai toteutuneen näkymän päätaulukko.
Lisäaiheet
-
Edellytykset
-
Syntaksi
-
Semantiikka
-
Esimerkkejä
Edellytykset
kun päivität taulukon arvoja, taulukon on oltava omassa skeemassasi tai sinulla on oltava taulukossa objektin etuoikeus UPDATE.
Päivitettäväksi arvot näkymän perustaulukossa:
-
Sinulla on oltava näkymässä
UPDATE-objektioikeus ja -
Jokaisella, joka omistaa näkymän sisältävän skeeman, on oltava
UPDATE-objektioikeus perustaulussa.
Järjestelmän UPDATE ANY TABLE -oikeuden avulla voit myös päivittää arvoja missä tahansa tai taulukossa minkä tahansa näkymän.
Sinulla on oltava myös SELECT -objektioikeus päivitettävälle objektille, jos:
-
Objekti on etätietokannassa tai
-
SQL92_SECURITY-alustusparametri on asetettu arvoonTRUEjaUPDATE-operaatio viittaa taulukon sarakkeisiin, kuten sarakkeisiinwhere_clause.
Syntaksi
päivitys :: =
Kuvaesityksen päivitys.gif
(DML_table_expression_clause :: =, update_set_clause :: =, where_clause :: =, returning_clause :: =, error_logging_clause :: =)
DML_table_expression_clause :: =
Kuvan kuvaus DML_table_expression_clause.gif
(alikysely :: = – osa SELECT-osaa, alikyselyn_rajoituksen_lauseke :: =, taulukon_kokoelman_lauseke :: =)
alikyselyn_rajoituksen_lauseke :: =

Kuvan kuvaus subquery_restriction_clause.gif
table_collection_expression :: =
![]()
Kuva taulukon_kokoelma_lauseke.gif-kuvaus
update_set_clause :: =

Kuvan kuvaus päivitys-set_clause. gif
where_clause :: =
![]()
Kuvan kuvaus where_clause.gif
returning_clause :: =

Kuvan kuvaus returning_clause.gif
error_logging_clause :: =
Kuvan kuvaus error_logging_clause.gif
Semantiikka
vihje
Määritä kommentti joka välittää ohjeet optimoijalle suoritussuunnitelman valitsemisesta käskylle.
Voit sijoittaa rinnakkaisen vihjeen heti UPDATE -avainsanan peräkkäin molempien alaosien kanssa. valehaku ja UPDATE -operaatiot.
Katso myös:
-
Oracle Database Performance Tuning Guide and ” Vihjeiden käyttäminen vihjeiden syntaksissa ja kuvauksessa.
-
Oracle Database Performance Tuning Guide and Oracle Database Concepts – yksityiskohtaiset tiedot rinnakkaisesta DML: stä
DML_table_expression_clause
Lauseke ONLY koskee vain näkymiä. Määritä ONLY syntaksit, jos lausekkeen UPDATE näkymä on näkymä, joka kuuluu hierarkiaan, etkä halua päivittää rivejä mistä tahansa sen alikatselmista.
Katso myös:
”Rajoitukset DML_table_expression_clause -lausekkeelle” ja ”Taulukon päivittäminen: Esimerkkejä”
skeema
Määritä kaava, joka sisältää päivitettävän objektin. Jos jätät pois schema, tietokanta olettaa, että objekti on omassa skeemassasi.
taulukko | näkymä | materialized_view | subquery
Määritä päivitettävän alikyselyn palauttaman taulukon, näkymän, materialisoidun näkymän tai sarakkeiden nimi. UPDATE -lausekkeen antaminen taulukkoon laukaisee kaikki UPDATE -taulukot, jotka liittyvät taulukkoon.
-
Jos määrität
view, tietokanta päivittää näkymän perustaulukon.Näkymää ei voi päivittää, paitsiINSTEADOF-liipaisuilla, jos näkymän määrittävä kysely sisältää jonkin seuraavista rakenteista:
Joukko-operaattori ADISTINCT-operaattori Aggregaatti- tai analyyttinen toiminto AGROUPBY,ORDERBY,MODEL,CONNECTBYtaiSTARTWITHlauseke Kokoelma-lausekeSELECTlista AlakyselySELECT-luettelossaWITH READ ONLYnimetty alakysely liittyy joitain poikkeuksia lukuun ottamatta , kuten dokumentoidaan Oracle Database Administrator’s Guide -oppaassa
-
Et voi päivittää useampaa kuin yhtä perustaulukkoa näkymän kautta.
-
Lisäksi, jos näkymä luotiin
WITHCHECK, voit päivittää näkymää vain, jos saadut tiedot täyttävät näkymän määrittävän kyselyn. -
Jos
tabletaiview-taulukko sisältää yhden tai useampia verkkotunnushakemistosarakkeita, ja tämä käsky suorittaa sopivan indextype-päivitysrutiinin. -
Et voi päivittää rivejä vain luku -toteutetussa näkymässä. Jos päivität rivit kirjoitettavissa olevassa materialisoidussa näkymässä, tietokanta päivittää rivit taustalla olevasta säilötaulukosta. Päivitykset korvataan kuitenkin seuraavalla päivitystoiminnolla. Jos päivität rivejä päivitettävässä materialisoidussa näkymässä, joka on osa materialisoitunutta näkymäryhmää, tietokanta päivittää myös vastaavat taulukot.
Katso Lisäksi:
-
Oracle Data Cartridge Developer’s Guide to more for the indextype update routines
-
CREATE MATERIALIZED VIEW for information päivitettävien materialisoitujen näkymien luominen
OSIO | ALAOSA
Määritä osion tai osion nimi ryhmässä table kohdistettu päivityksiin. Sinun ei tarvitse määrittää osion nimeä, kun päivität arvoja ositetussa taulukossa. Joissakin tapauksissa osion nimen määrittäminen voi kuitenkin olla tehokkaampaa kuin monimutkainen where_clause .
Katso myös:
”Viittaaminen osioituihin taulukoihin ja hakemistoihin” ja ”Osion päivittäminen: Esimerkki”
dblink
Määritä täydellinen tai osittainen nimi tietokantalinkistä etätietokantaan, jossa t esine sijaitsee. Voit käyttää tietokantalinkkiä etäobjektin päivittämiseen vain, jos käytät Oracle Database -jakelutoimintoa.
Jos jätät pois dblink,, tietokanta olettaa objektin olevan paikallisesta tietokannasta.
Katso myös:
”Viitaten etätietokantojen objekteihin” tietoja tietokantalinkkeihin viittaamisesta
subquery_restriction_clause
Rajoita alikyselyä subquery_restriction_clause -toiminnolla jollakin seuraavista tavoista:
VAIN LUE LUE Määritä WITH READ ONLY osoittaa, että taulukkoa tai näkymää ei voi päivittää.
TARKISTUSVAIHTOEHDOLLA Määritä WITH CHECK OPTION osoittaaksesi, että Oracle Database kieltää kaikki muutokset taulukossa tai näkymässä rivit, jotka eivät sisälly alakyselyyn. Kun sitä käytetään DML-käskyn alikyselyssä, voit määrittää tämän lauseen alakyselyssä FROM -lausekkeessa, mutta ei alakyselyssä WHERE lauseke.
RAJOITUSRAJOITUS Määritä rajoituksen CHECK OPTION nimi. Jos jätät tämän tunnisteen pois, Oracle määrittää rajoitukselle automaattisesti muodon SYS_C n nimen, jossa n on kokonaisluku, joka tekee rajoitteen nimi, joka on ainutlaatuinen tietokannassa.
Katso myös:
”WITH CHECK OPTION -lausekkeen käyttö: Esimerkki”
table_collection_expression
table_collection_expression avulla voit ilmoittaa Oraclelle, että collection_expression -arvoa tulisi käsitellä taulukkona kysely- ja DML-operaatioita varten. collection_expression voi olla alikysely, sarake, funktio tai kokoelmarakentaja. Muodosta riippumatta sen on palautettava kokoelma-arvo eli arvo, jonka tyyppi on sisäkkäinen taulukko tai varray. Tätä kokoelman elementtien purkamisprosessia kutsutaan kokoelman poistamiseksi.
Valinnainen plus (+) on merkityksellinen, jos yhdistät lausekkeen TABLE vanhemman kanssa pöytä. + Luo molempien ulomman liitoksen niin, että kysely palauttaa rivit ulkotaulusta, vaikka kokoelma-lauseke on tyhjä.
Huomaa:
Oraclen aiemmissa julkaisuissa kun collection_expression oli alakysely, table_collection_expression ilmaistiin muodossa THE subquery.Tämä käyttö on nyt poistettu käytöstä.
Voit päivittää rivejä taulukossa table_collection_expression käyttämällä toisen taulukon rivejä. Voit esimerkiksi koota neljä neljännesvuosittaista myyntitaulukkoa vuotuiseksi myyntitaulukoksi.
t_alias
Määritä viitetaulukolle, näkymälle tai alikyselylle korrelaation nimi (alias). muualla lausunnossa. Tämä alias vaaditaan, jos DML_table_expression_clause viittaa mihin tahansa objektityypin määritteeseen tai objektityypin menetelmään.
Katso myös:
”Vastaava päivitys: Esimerkki ”
Rajoitukset DML_table_expression_clause-lauseeseen Tähän lausekkeeseen sovelletaan seuraavia rajoituksia:
-
Et voi suorittaa tätä lausetta, jos
tabletaiview-taulukko sisältää kaikki verkkotunnushakemistot, jotka on merkittyIN_PROGRESStaiFAILED. -
Et voi lisätä osioon, jos jokin asiaankuuluva hakemisto-osio on merkitty
UNUSABLE. -
Et voi määrittää
order_by_clause-tietoaDML_table_expression_clause-alikyselyssä. -
Jos määrität indeksin, hakemisto-osion tai hakemisto-osion, joka on merkitty
UNUSABLE, niin lausekeUPDATEepäonnistuu, elleiSKIP_UNUSABLE_INDEXESistunnon parametri on asetettu arvoonTRUE.
Katso myös:
ALTER SESSION lisätietoja SKIP_UNUSABLE_INDEXES istunnon parametri
update_set_clause
update_set_clause antaa sinun asettaa sarakearvoja.
sarake
Määritä päivitettävän objektin sarakkeen nimi. Jos jätät taulukon sarakkeen pois update_set_clause -kohdasta, kyseisen sarakkeen arvo pysyy muuttumattomana.
Jos column viittaa LOB-objekti-määritteeseen, ja sinun on ensin alustettava se arvolla tyhjä tai tyhjä. Et voi päivittää sitä kirjaimella. Lisäksi, jos päivität LOB-arvoa jollakin muulla menetelmällä kuin suoralla UPDATE SQL-käskyllä, sinun on ensin lukittava LOB sisältävä rivi. Lisätietoja on kohdassa for_update_clause.
Jos column on osa ositetun taulukon osiointiavain, niin UPDATE epäonnistuu, jos muutat arvoa sarakkeessa, joka siirtää rivin toiseen osioon tai aliosioon, ellet ota rivin liikettä käyttöön. Katso kohta Luo taulukko tai Vaihda taulukko row_movement_clause.
Lisäksi, jos column on osa osioitu avain luettelo-osioiduista taulukoista, sitten UPDATE epäonnistuu, jos määrität sarakkeelle arvon, jota ei vielä ole partition_value yhden osion luettelo.
alakysely
Määritä alakysely, joka palauttaa täsmälleen yhden rivin kutakin päivitettyä riviä kohti.
-
Jos määrität vain yhden sarakkeen
update_set_clause, alikysely voi palauttaa vain yhden arvon. -
Jos määrität useita sarakkeita
update_set_clause, alikyselyn on palautettava niin monta arvoa kuin olet määrittänyt sarakkeet. -
Jos alakysely ei palauta rivejä, sarakkeelle on määritetty nolla.
-
Jos tämä
subqueryviittaa etäobjekteihin, niinUPDATE-toiminto voi toimia rinnakkain niin kauan kuin referen ce ei palaa takaisin paikallisen tietokannan objektiin. Jos kuitenkinsubquerykohdassaDML_table_expression_clauseviittaa mihin tahansa etäobjektiin, niinUPDATEtoiminto suoritetaan sarjaan ilman ilmoitusta.
Voit käyttää flashback_query_clause -alikyselyn sisällä päivittääksesi table aiempien tietojen kanssa. Katso lisätietoja lausekkeesta SELECT: n flashback_query_clause-osiosta.
Katso myös:
-
SELECT ja ”Alakyselyjen käyttäminen”
-
parallel_clause CREATE TABLE -dokumentaatiossa
expr
Määritä lauseke, joka ratkaisee vastaavalle sarakkeelle määritetyn uuden arvon.
Katso myös:
Luku 6, ”lausekkeet” expr ja ”Objektitaulukon päivittäminen: Esimerkki”
OLETUS Määritä DEFAULT määrittääksesi sarakkeen aiemmin oletusarvoksi määritetyn arvon arvo sarakkeelle. Jos vastaavalle sarakkeelle ei ole määritetty oletusarvoa, tietokanta asettaa sarakkeen nollaksi.
Rajoitus päivittää oletusarvoihin Et voi määrittää DEFAULT jos päivität näkymää.
VALUE-lauseke
VALUE -lausekkeen avulla voit määrittää objektitaulukon koko rivin.
Rajoitus VALUE-lausekkeelle Voit määrittää tämän lauseen vain objektitaulukolle.
Huomaa:
Jos lisäät merkkijonolitraa RAW -sarakkeeseen, seuraavien kyselyjen aikana Oracle Database tarkistaa koko taulukon eikä käytä mitään hakemistoja, jotka voivat olla RAW -sarakkeessa.
Katso myös:
”Objektitaulukon päivittäminen: Esimerkki”
where_clause
where_clause antaa sinun rajoittaa päivitetyt rivit niille, joille määritetty condition on totta. Jos jätät tämän lausekkeen pois, tietokanta päivittää kaikki taulukon tai näkymän rivit. Katso luvun condition syntaksia luvusta 7, ”Ehdot”.
where_clause määrittää rivit mitkä arvot päivitetään. Jos et määritä where_clause, kaikki rivit päivitetään. Jokaiselle riville, joka täyttää where_clause -arvon, sarakkeet, jotka ovat tasa-arvooperaattorin (=) vasemmalla puolella update_set_clause -kohdassa, asetetaan arvoiksi operaattorin oikealla puolella olevista vastaavista ilmaisuista. Lausekkeet arvioidaan riviä päivitettäessä.
returning_clause
Palautuslauseke hakee rivit, joihin DML-käsky vaikuttaa. Voit määrittää tämän lauseen taulukoille ja toteutuneille näkymille sekä näkymille, joilla on yksi perustaulukko.
Kun käytetään yhtä riviä, DML-käsky, jonka returning_clause voi noutaa sarakelausekkeet käyttämällä kyseistä riviä, rowidia ja REFs kyseiselle riville ja tallentaa ne isäntämuuttujiin tai PL / SQL-muuttujiin.
Kun käytät useita rivejä, DML-käsky, jonka returning_clause tallentaa lausekkeiden, rivien ja REFs arvot lausekkeista, joihin asianomaiset rivit sisältyvät sidosryhmiin.
lausekkeen Jokaisen expr -luettelon kohteen on oltava kelvollinen lausekkeen syntakse.
INTO INTO -lauseke osoittaa, että muutettujen rivien arvot on tallennettava data_item -luettelossa määritettyihin muuttujiin.
data_item Jokainen data_item on isäntämuuttuja tai PL / SQL-muuttuja, joka tallentaa haetun expr -arvon.
Jokaiselle RETURNING -luettelon lausekkeelle sinun on määritettävä vastaava tyyppinen PL / SQL-muuttuja tai isäntämuuttuja INTO luettelo.
Rajoitukset Seuraavia rajoituksia sovelletaan lausekkeeseen RETURNING:
-
expron rajoitettu seuraavasti:-
Mille
UPDATEjaDELETElausekkeiden jokaisenexpron oltava yksinkertainen lauseke tai yhden joukon aggregaattifunktion lauseke. Et voi yhdistää yksinkertaisia lausekkeita ja yhden joukon yhdistettyjä funktiolausekkeita samaanreturning_clause.INSERT-lausekkeiden jokaisenexpron oltava yksinkertainen lauseke. Koostefunktioita ei tueta lausekkeessaINSERT-lausekeRETURNING. -
Yksittäiset joukko funktiolausekkeita ei voi sisältää avainsanaa
DISTINCT.
-
-
Jos
expr-luettelo sisältää ensisijaisen avaimen sarakkeen tai muunNOTNULL-sarakkeen, sitten päivityslauseke epäonnistuu, jos taulukossa on siihen määritettyBEFOREUPDATE-liipaisin. -
Et voi määrittää
returning_clausemonikäyttöiselle lisäykselle. -
Tätä lauseketta ei voi käyttää rinnakkaisen DML: n tai etäobjektien kanssa.
-
Et voi hakea
LONG-tyyppejä tällä lausekkeella. -
Et voi määrittää tätä lausetta näkymälle, jolle
INSTEADOF-liipaisin on määritetty.
Katso myös :
PL / SQL-käyttäjä ” s Opas ja viite BULK COLLECT -lausekkeen käytöstä useiden arvojen palauttamiseksi kokoelmamuuttujille
error_logging_clause
Error_logging_clause käyttäytyy UPDATE -lausekkeessa samalla tavalla kuin lausekkeessa INSERT. Katso lisätietoja INSERT -lausekkeesta error_logging_clause.
Katso myös:
”Lisääminen taulukkoon virheiden kirjaamisen kanssa: Esimerkki”
Esimerkkejä
Taulukon päivittäminen: Esimerkkejä Seuraavat -lauseke antaa tyhjäpalkkiot kaikille työntekijöille, joilla on työpaikka SH_CLERK:
UPDATE employees SET commission_pct = NULL WHERE job_id = "SH_CLERK";
Seuraava lauseke ylentää Douglas-apurahaa johtajalle osastolta 20 1000 dollarin korotuksella:
UPDATE employees SET job_id = "SA_MAN", salary = salary + 1000, department_id = 120 WHERE first_name||" "||last_name = "Douglas Grant";
Seuraava lause lisää työntekijän palkkaa employees taulukko remote -tietokannassa:
UPDATE employees@remote SET salary = salary*1.1 WHERE last_name = "Baer";
Seuraava esimerkki näyttää seuraavat UPDATE -lauseke:
-
update_set_clause: n molemmat muodot yhdessä lauseessa -
Vastaava alakysely
-
A
where_clausepäivitettyjen rivien rajoittamiseksi
Edeltävä UPDATE -käsky suorittaa seuraavat toiminnot:
-
Päivittää vain työntekijät, jotka työskentelevät Genevessä tai Münchenissä (sijainnit 2900 ja 2700)
-
Asettaa
department_idnäille työntekijöilledepartment_id, joka vastaa Bombayta (location_id2100) -
Asettaa jokaisen työntekijän palkan 1,1-kertaiseksi osastonsa keskipalkkaan
-
Asettaa jokaisen työntekijän palkkion 1,5-kertaiseksi osastonsa keskimääräiseen palkkioon
Osion päivittäminen: Esimerkki Seuraava esimerkki päivittää sales -taulukon yhden osion arvot:
UPDATE sales PARTITION (sales_q1_1999) s SET s.promo_id = 494 WHERE amount_sold > 1000;
Objektitaulukon päivittäminen: Esimerkki Seuraava käsky luo kaksi objektitaulukkoa, people_demo1 ja people_demo2 , taulukon kokoelmissa luodun people_typ -objektin esimerkkejä. Esimerkki osoittaa, kuinka päivitetään people_demo1 -rivi valitsemalla rivi kohdasta people_demo2:
Esimerkki käyttää VALUE objektiviittaustoiminto sekä SET -lausekkeessa että alikyselyssä.
Vastaava päivitys: Esimerkki Esimerkiksi käyttää vastaavaa alakyselyä sisäkkäisten taulukkorivien päivittämiseen, katso ”Taulukkokokoelmat: esimerkkejä”.
PALAUTUS-lausekkeen käyttö päivityksen aikana: Esimerkki Seuraava esimerkki palauttaa päivitetyn rivin arvot ja tallentaa tuloksen PL / SQL-muuttujat bnd1, bnd2, bnd3:
seuraava esimerkki osoittaa, että voit määrittää yhden joukon aggregaattifunktion palautuslausekkeen lausekkeeseen:
UPDATE employees SET salary = salary * 1.1 WHERE department_id = 100 RETURNING SUM(salary) INTO :bnd1;