Creative Saplings

UPDATE (Magyar)

január 29, 2021
No Comments

Cél

A UPDATE utasítással módosíthatja a meglévő értékeket egy táblában vagy egy nézet alaptáblájában, vagy a megvalósult nézet főtáblája.

További témák

  • Előfeltételek

  • Szintaxis

  • Semantika

  • Példák

Előfeltételek

Ha frissítenie kell egy táblázat értékeit, akkor a táblának a saját sémájában kell lennie, vagy a UPDATE objektumjoggal kell rendelkeznie a táblán.

Frissítéshez értékek a nézet alaptáblájában:

  • A nézetben UPDATE objektumjogosultsággal kell rendelkeznie, és

  • Akinek a nézetet tartalmazó séma a tulajdonosa, annak UPDATE objektumjogosultsággal kell rendelkeznie az alaptáblán.

A UPDATE ANY TABLE rendszerjogosultság lehetővé teszi az értékek frissítését bármelyik táblázatban vagy az alaptáblában bármely nézethez.

Szüksége van a SELECT objektumjogosultságra a frissíteni kívánt objektumon, ha:

  • Az objektum egy távoli adatbázisban található, vagy

  • A SQL92_SECURITY inicializálási paraméter értéke TRUE és a UPDATE művelet a táblázat oszlopaira hivatkozik, például egy where_clause oszlopokra.

Szintaxis

update :: =

Az update.gif ábra leírása

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

DML_table_expression_clause :: =

Az ábra leírása DML_table_expression_clause.gif

(subquery :: = – a SELECT része, subquery_restriction_clause :: =, table_collection_expression :: =)

subquery_restriction_clause :: =


Az ábra leírása subquery_restriction_clause.gif

table_collection_expression :: =


Az table_collection_expression.gif ábra leírása

update_set_clause :: =


Az update_set_clause ábra leírása. gif

where_clause :: =


Ahol_clause.gif ábra leírása

returning_clause :: =


Az ábra leírása returning_clause.gif

error_logging_clause :: =

Az ábra leírása error_logging_clause.gif

Szemantika

tipp

Megjegyzés megadása amely átadja az optimalizálónak az utasítás végrehajtási tervének kiválasztására vonatkozó utasításokat.

Párhuzamos tippet helyezhet el azonnal a UPDATE kulcsszó után, hogy párhuzamosítsa mind az alatta lévő fekvő szkennelés és UPDATE műveletek.

Lásd még:

  • Oracle Database Performance Tuning Guide and ” Tippek használata “a tippek szintaxisához és leírásához

  • Az Oracle Database Performance Tuning Guide és az Oracle Database Concepts a párhuzamos DML-ről szóló részletes információkért

DML_table_expression_clause

A ONLY záradék csak a nézetekre vonatkozik. Adja meg a ONLY szintaxist, ha a UPDATE záradék nézete egy hierarchiához tartozó nézet, és nem kíván sorokat frissíteni alnézeteit.

Lásd még:

“A DML_table_expression_clause korlátozásai” és “A táblázat frissítése: Példák”

séma

Adja meg a frissítendő objektumot tartalmazó sémát. Ha kihagyja a schema elemet, akkor az adatbázis feltételezi, hogy az objektum a saját sémájában található.

táblázat | nézet | materialized_view | subquery

Adja meg a táblázat, nézet, materializált nézet vagy oszlopok nevét, amelyeket egy frissítendő al lekérdezés adott vissza. UPDATE utasítás kiadása egy tábla ellen minden UPDATE triggert kivált a táblához.

  • Ha megadja a view elemet, akkor az adatbázis frissíti a nézet alaptábláját.Nem frissíthet nézetet, kivéve a INSTEAD OF triggereket, ha a nézet meghatározó lekérdezése a következő konstrukciók egyikét tartalmazza:

A halmaz operátor ADISTINCToperátor Az A vagy az összesítő vagy elemző függvény AGROUPBY,ORDERBY,MODEL,CONNECTBYvagySTARTWITHzáradék Gyűjtemény-kifejezés egySELECTlista ASELECTlistában szereplő allekérdezésWITH READ ONLYalkérdezés csatlakozik, néhány kivétellel , az Oracle Database Administrator útmutatójában leírtak szerint

  • Egy nézeten keresztül egynél több alaptáblát nem frissíthet.

  • Ezenkívül, ha nézet a WITH CHECK , akkor csak akkor frissítheti a nézetet, ha az így kapott adatok kielégítik a nézet meghatározó lekérdezését.

  • Ha table vagy a view alaptáblája egy vagy több tartományindex-oszlopot tartalmaz, akkor ez az utasítás végrehajtja a megfelelő indextype frissítési rutint.

  • A csak olvasható materializált nézetben nem lehet frissíteni a sorokat. Ha írható materializált nézetben frissíti a sorokat, akkor az adatbázis frissíti a sorokat az alatta lévő tárolótáblából. A frissítéseket azonban a következő frissítési művelet során felülírják. Ha a materializált nézetcsoport részét képező, frissíthető, materializált nézetben sorokat frissít, akkor az adatbázis a megfelelő táblákat is frissíti a főtáblában.

Lásd Továbbá:

  • Az Oracle Data Cartridge Developer útmutatója további információkért az indextype frissítési rutinokról

  • MATERIALIZÁLT NÉZET LÉTREHOZ frissíthető, materializált nézetek létrehozása

PARTITION | ALRÉSZ

Adja meg a partíció vagy alpartíció nevét a table célzott a frissítésekhez. A partíciós táblázat értékeinek frissítésekor nem kell megadnia a partíció nevét. Bizonyos esetekben azonban a partíció nevének megadása hatékonyabb lehet, mint egy bonyolult where_clause .

Lásd még:

“Hivatkozás particionált táblákra és indexekre” és “Partíció frissítése: Példa”

dblink

Adja meg egy adatbázis teljes vagy részleges neve, amely egy távoli adatbázishoz kapcsolódik, ahol t az objektum található. Csak akkor használhat adatbázis-hivatkozást egy távoli objektum frissítésére, ha az Oracle Database elosztott funkcióját használja.

Ha kihagyja a dblink, elemet, akkor az adatbázis feltételezi, hogy az objektum a helyi adatbázisban.

Lásd még:

“Hivatkozás a távoli adatbázisok objektumaira” az adatbázis-hivatkozásokra való hivatkozásról.

subquery_restriction_clause

A subquery_restriction_clause paranccsal korlátozhatja az allekérdezést a következő módok egyikével:

CSAK OLVASATAL adja meg a WITH READ ONLY annak jelzésére, hogy a tábla vagy nézet nem frissíthető.

ELLENŐRZÉSI OPCIÓVAL Adja meg a WITH CHECK OPTION parancsot annak jelzésére, hogy az Oracle Database tiltja a táblázat vagy nézet minden olyan módosítását, amely előállíthat sorok, amelyek nem szerepelnek az allekérdezésben. Ha egy DML utasítás allekérdezésében használják, akkor ezt a záradékot megadhatja az FROM záradék egyik allekérdezésében, de a WHERE záradék.

KORLÁTOZÁSI kényszer Adja meg a CHECK OPTION kényszer nevét. Ha kihagyja ezt az azonosítót, akkor az Oracle automatikusan hozzárendeli a korlátozáshoz a következő formanyomtatvány nevét: SYS_C n, ahol n olyan egész szám, amely az kényszer neve az adatbázisban egyedülálló.

Lásd még:

“A WITH CHECK OPTION záradék használata: Példa”

table_collection_expression

A A table_collection_expression segítségével tájékoztathatja az Oracle-t arról, hogy az collection_expression értékét táblázatként kell kezelni a lekérdezés és a DML műveletek céljából. Az collection_expression lehet allekérdezés, oszlop, függvény vagy gyűjtemény-konstruktor. Formájától függetlenül vissza kell adnia egy gyűjteményértéket – vagyis egy olyan értéket, amelynek típusa beágyazott tábla vagy varray. A gyűjtemény elemeinek kinyerésének ezt a folyamatát hívjuk gyűjtemény-eltávolításnak.

Az opcionális plusz (+) releváns, ha a TABLE kifejezéshez csatlakozik a szülővel. asztal. A + létrehoz egy külső összekapcsolást a kettőből, így a lekérdezés akkor is visszaadja a sorokat a külső táblából, ha a gyűjtemény kifejezés null.

Megjegyzés:

Az Oracle korábbi verzióiban amikor a collection_expression részlekérdezés volt, a table_collection_expression kifejezést a következővel fejezték ki: “>

.Ez a használat már elavult.

A table_collection_expression segítségével frissítheti az egyik tábla sorait egy másik tábla sorai alapján. Összeállíthat például négy negyedéves értékesítési táblázatot egy éves értékesítési táblázatba.

t_alias

Adjon meg egy korrelációs nevet (álnevet) a hivatkozni kívánt táblához, nézethez vagy allekérdezéshez. a nyilatkozat másutt. Erre az aliasra akkor van szükség, ha a DML_table_expression_clause bármilyen objektumtípus-attribútumra vagy objektumtípus-módszerre hivatkozik.

Lásd még:

“Kapcsolódó frissítés: Példa “

A DML_table_expression_clause korlátozásai Ez a klauzula a következő korlátozások hatálya alá tartozik:

  • Nem hajthatja végre ezt az utasítást, ha table vagy a view alaptáblája tartalmaz minden olyan tartományi indexet, amely IN_PROGRESS vagy FAILED jelöléssel rendelkezik.

  • Nem illeszthető be a partícióba, ha az érintett indexpartíciók UNUSABLE jelöléssel vannak ellátva.

  • A order_by_clause nem adható meg a DML_table_expression_clause allekérdezésében.

  • Ha megad egy indexet, indexpartíciót vagy indexrészpartíciót, amelyet UNUSABLE jelöléssel láttak el, akkor a UPDATE utasítás sikertelen lesz, hacsak a SKIP_UNUSABLE_INDEXES munkamenet paraméter TRUE értékre lett állítva.

Lásd még:

ALTER SESSION információkat a SKIP_UNUSABLE_INDEXES munkamenet paraméter

update_set_clause

Az update_set_clause segítségével oszlopértékeket állíthat be.

oszlop

Adja meg a frissítendő objektum oszlopának nevét. Ha kihagyja a táblázat oszlopát a update_set_clause menüből, akkor az oszlop értéke változatlan marad.

Ha column egy LOB objektum attribútumra utal, akkor először inicializálnia kell üres vagy null értékkel. Nem frissítheti szó szerinti betűvel. Ezenkívül, ha a LOB értékét a közvetlen UPDATE SQL utasításon kívül más módszerrel frissíti, akkor először le kell zárnia a LOB-ot tartalmazó sort. További információ: for_update_clause.

Ha a column része a particionált táblák particionálási kulcsának, akkor UPDATE sikertelen lesz, ha megváltoztat egy értéket az oszlopban, amely áthelyezi a sort egy másik partícióra vagy alpartícióra, hacsak nem engedélyezi a sor mozgatását. Kérjük, olvassa el a CREATE TABLE vagy az ALTER TABLE row_movement_clause részét.

Ezenkívül, ha a column része a A felsorolással partíciózott tábla particionálási kulcsa, akkor a UPDATE nem fog sikerülni, ha olyan értéket ad meg az oszlopnak, amely még nem létezik a partition_value az egyik partíció listája.

allekérdezés

Adjon meg egy olyan allekérdezést, amely pontosan egy sort ad vissza minden frissített sorhoz.

  • Ha csak egy oszlopot ad meg az update_set_clause mezőben, akkor az al lekérdezés csak egy értéket adhat vissza.

  • Ha több oszlopot ad meg a update_set_clause, akkor az allekérdezésnek annyi értéket kell visszaadnia, amennyit megadott oszlopokkal.

  • Ha az alkérdezés nem ad sorokat, akkor a oszlop nullához van rendelve.

  • Ha ez az subquery távoli objektumokra vonatkozik, akkor a UPDATE művelet párhuzamosan futtatható, amíg a referen A ce nem tér vissza a helyi adatbázis objektumához. Ha azonban a subquery a DML_table_expression_clause részben bármilyen távoli objektumra utal, akkor a UPDATE A művelet sorozatosan, értesítés nélkül fog futni.

Használhatja az flashback_query_clause részt az allekérdezésben az korábbi adatokkal. Kérjük, olvassa el a SELECT flashback_query_clause cikkét erről a záradékról.

Lásd még:

  • SELECT és “Alkérdezések használata”

  • parallel_clause a Táblázat létrehozása

expr

Adjon meg egy kifejezést, amely feloldja a megfelelő oszlophoz rendelt új értéket.

Lásd még:

6. fejezet, “Kifejezések” a expr és “Objektumtáblázat frissítése: Példa”

Alapértelmezés Adja meg az DEFAULT elemet az oszlop előzőleg alapértelmezettként történő beállításához az oszlop értéke. Ha a megfelelő oszlopnak nincs megadva alapértelmezett értéke, akkor az adatbázis nullára állítja az oszlopot.

Korlátozás az alapértelmezett értékekre történő frissítéskor Nem adhatja meg a DEFAULT elemet, ha nézetet frissít.

VALUE záradék

A VALUE záradék lehetővé teszi az objektumtábla teljes sorának megadását.

A VALUE záradék korlátozása Ezt a záradékot csak egy objektumtáblához adhatja meg.

Megjegyzés:

Ha karakterlánc-literálokat illeszt be egy RAW oszlopba, akkor a következő lekérdezések során az Oracle Database teljes táblaellenőrzést hajt végre ahelyett, hogy bármilyen indexet használna az RAW oszlopban.

Lásd még:

“Objektumtáblázat frissítése: Példa”

where_clause

A where_clause segítségével korlátozhatja a frissített sorokat azokra, amelyekre a megadott condition igaz. Ha kihagyja ezt a záradékot, akkor az adatbázis a táblázat vagy nézet összes sorát frissíti. A condition szintaxisát a 7. fejezetben találja.

A where_clause meghatározza a sorokat mely értékek frissülnek. Ha nem adja meg a where_clause elemet, akkor az összes sor frissül. Minden olyan sor esetében, amely kielégíti a where_clause elemet, az update_set_clause egyenlőség operátor bal oldalán található oszlopok értéke az üzemeltetőtől jobbra lévő megfelelő kifejezések közül. A kifejezéseket a sor frissítésekor értékelik.

returning_clause

A visszatérő záradék beolvassa a DML utasítással érintett sorokat. Megadhatja ezt a záradékot a táblákhoz és a megvalósult nézetekhez, valamint az egyetlen alaptáblával rendelkező nézetekhez.

Ha egy sorban működik, akkor egy DML utasítás returning_clause lekérheti az oszlopkifejezéseket az érintett sor, rowid és REFs használatával az érintett sorra, és tárolhatja őket gazdagép- vagy PL / SQL-változókban.

több sor, egy returning_clause DML utasítás tárolja a kifejezések, sorok és REFs kifejezéseket, amelyek az érintett sorokat kötési tömbökbe foglalják.

expr A expr lista minden elemének érvényes kifejezésszintaxisnak kell lennie.

INTO A INTO záradék azt jelzi, hogy a megváltozott sorok értékeit a data_item listában megadott változó (k) ban kell tárolni.

data_item Minden data_item egy gazdagépváltozó vagy PL / SQL változó, amely tárolja a lekért expr értéket.

A RETURNING lista minden kifejezéséhez meg kell adnia egy megfelelő típus-kompatibilis PL / SQL változót vagy gazdagép-változót a INTO list.

Korlátozások A következő korlátozások vonatkoznak a RETURNING záradékra:

  • A a következőképpen van korlátozva:

    • UPDATE és DELETE utasításoknak minden expr -nek egyszerű kifejezésnek vagy egyetlen halmazú összesített függvény-kifejezésnek kell lennie. Nem kombinálhatja az egyszerű kifejezéseket és az egyetlen halmazú összesített függvény-kifejezéseket ugyanabban a returning_clause -ben. A INSERT utasításokhoz minden expr -nek egyszerű kifejezésnek kell lennie. Az összesített függvényeket egy INSERT utasítás RETURNING záradék nem támogatja.

    • Egyetlen- Az összesített függvénykifejezések nem tartalmazhatják a DISTINCT kulcsszót.

  • Ha a lista tartalmaz egy elsődleges kulcsoszlopot vagy más NOT NULL oszlopot, akkor a frissítési utasítás meghiúsul, ha a táblázat rendelkezik a rajta meghatározott BEFORE UPDATE trigger.

  • Nem adhatja meg a returning_clause egy többszörösen beilleszthető beillesztéshez.

  • Ezt a záradékot nem használhatja párhuzamos DML-sel vagy távoli objektumokkal.

  • Ezzel a záradékkal nem lehet lekérni a LONG típusokat.

  • Nem adhatja meg ezt a záradékot egy nézethez, amelyen meghatároztak egy INSTEAD OF ravaszt.

Lásd még :

PL / SQL felhasználó ” s Útmutató és tájékoztatás a BULK COLLECT záradék használatáról több érték visszaadásához a gyűjtemény változókhoz

error_logging_clause

A error_logging_clause ugyanúgy viselkedik egy UPDATE utasításban, mint egy INSERT utasításban. További információkért olvassa el a INSERT utasítást error_logging_clause.

Lásd még:

“Beszúrás egy táblába hibanaplózással: példa”

Példák

Táblázat frissítése: Példák A következők utasítás semmilyen jutalékot ad az összes olyan munkavállalónak, aki a következő munkakörrel rendelkezik: a 20. osztály 1000 dolláros emelésével:

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

A következő állítás emeli a employees munkavállaló fizetését táblázat a remote adatbázisban:

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

A következő példa a UPDATE utasítás:

  • Az update_set_clause mindkét formája egyetlen utasításban együtt

  • Összefüggő allekérdezés

  • A where_clause a frissített sorok korlátozásához

Az előző UPDATE utasítás a következő műveleteket hajtja végre:

  • Csak azokat az alkalmazottakat frissíti, akik Genfben vagy Münchenben dolgoznak (2900 és 2700 telephelyek)

  • Beállítja a department_id ezen alkalmazottak számára a Bombay-nek megfelelő department_id (location_id 2100)

  • Az egyes alkalmazottak fizetését az osztályuk átlagos fizetésének 1,1-szeresére állítja

  • Minden alkalmazott jutalékát az osztályuk átlagos jutalmának 1,5-szeresére állítja

Partíció frissítése: Példa Az alábbi példa az sales tábla egyetlen partíciójában frissíti az értékeket:

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

Objektumtáblázat frissítése: Példa A következő utasítás két objektumtáblát hoz létre: people_demo1 és people_demo2 , a Táblagyűjteményekben létrehozott people_typ objektumról: Példák. A példa bemutatja, hogyan lehet frissíteni egy people_demo1 sort egy sor kiválasztásával a people_demo2 közül:

A példa a VALUE objektum hivatkozási függvény mind a SET záradékban, mind az allekérdezésben.

Korrelált frissítés: Példa Például összefüggő allekérdezést használ a beágyazott táblasorok frissítéséhez, kérjük, olvassa el a “Táblagyűjtemények: példák” című részt. / SQL változók bnd1, bnd2, bnd3:

A következő példa azt mutatja, hogy megadhat egyetlen halmaz összesített függvényt a visszatérő záradék kifejezésében:

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

Articles
Previous Post

Vásároljon USA-beli online áruházakat, és 2–4 nap múlva Indiába szállítunk!

Next Post

Kék kutyafajták - mitől olyan szépek?

Vélemény, hozzászólás? Kilépés a válaszból

Legutóbbi bejegyzések

  • A világ legjobb fotóiskolái, 2020
  • A szuverén polgárok kormányellenes filozófiájukat viszik az utakra
  • Stukkó javítási költség útmutató
  • Muckrakers (Magyar)
  • Precíziós onkológia

Archívum

  • 2021 február
  • 2021 január
  • 2020 december
  • 2020 november
  • 2020 október
  • 2020 szeptember
  • 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.