Creative Saplings

UPDATE (Čeština)

29 ledna, 2021
No Comments

Účel

Pomocí příkazu UPDATE můžete změnit existující hodnoty v tabulce nebo v základní tabulce pohledu nebo hlavní tabulka materializovaného pohledu.

Další témata

  • Předpoklady

  • Syntaxe

  • Sémantika

  • Příklady

Předpoklady

Pro Pokud chcete aktualizovat hodnoty v tabulce, musí být tabulka ve vašem vlastním schématu, nebo musíte mít v tabulce oprávnění UPDATE.

Aktualizace hodnoty v základní tabulce pohledu:

  • Musíte mít oprávnění UPDATE k objektu a

  • Kdokoli vlastní schéma obsahující pohled, musí mít oprávnění UPDATE k objektu v základní tabulce.

Systémové oprávnění UPDATE ANY TABLE také umožňuje aktualizovat hodnoty v libovolném tabulce nebo v základní tabulce jakéhokoli zobrazení.

Musíte mít také oprávnění SELECT k objektu, který chcete aktualizovat, pokud:

  • Objekt je ve vzdálené databázi nebo

  • Inicializační parametr SQL92_SECURITY je nastaven na TRUE a operace UPDATE odkazuje na sloupce tabulky, například na sloupce v where_clause.

Syntaxe

aktualizace :: =

Popis obrázku update.gif

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

DML_table_expression_clause :: =

Popis ilustrace DML_table_expression_clause.gif

(subquery :: = – část SELECT, subquery_restriction_clause :: =, table_collection_expression :: =)

subquery_restriction_clause :: =


Popis obrázku subquery_restriction_clause.gif

table_collection_expression :: =


Popis ilustrace table_collection_expression.gif

update_set_clause :: =


Popis ilustrace update_set_clause. gif

where_clause :: =


Popis ilustrace where_clause.gif

návratu_clause :: =


Popis obrázku návratu_clause.gif

error_logging_clause :: =

Popis obrázku error_logging_clause.gif

Sémantika

nápověda

Upřesněte komentář který předává pokyny optimalizátoru při výběru plánu provádění příkazu.

Okamžitě za klíčové slovo UPDATE můžete umístit paralelní nápovědu, která paralelizuje oba lhaní a operace UPDATE.

Viz také:

  • Průvodce optimalizací výkonu databáze Oracle a “ Použití tipů „pro syntaxi a popis rad

  • Průvodce optimalizací výkonu databáze Oracle a koncepty Oracle Database pro podrobné informace o paralelním DML

DML_table_expression_clause

Klauzule ONLY se vztahuje pouze na výběry dat. Zadejte ONLY syntaxi, pokud je pohled v klauzuli UPDATE pohled, který patří do hierarchie a nechcete aktualizovat řádky ze žádného jejích dílčích zobrazení.

Viz také:

„Omezení DML_table_expression_clause“ a „Aktualizace tabulky: příklady“

schéma

Určete schéma obsahující objekt, který má být aktualizován. Pokud vynecháte schema, databáze předpokládá, že objekt je ve vašem vlastním schématu.

tabulka | zobrazit | materialized_view | subquery

Určete název tabulky, pohledu, materializovaného pohledu nebo sloupců vrácených poddotazem, které mají být aktualizovány. Vydání příkazu UPDATE proti tabulce spustí jakékoli UPDATE spouštěče spojené s tabulkou.

  • Pokud zadáte view, databáze aktualizuje základní tabulku pohledu.Nelze aktualizovat zobrazení kromě spouštěčů INSTEAD OF, pokud definující dotaz pohledu obsahuje jeden z následujících konstruktů:

operátor množiny ADISTINCToperátor agregační nebo analytická funkce AGROUPBY,ORDERBY,MODEL,CONNECTBYneboSTARTWITHklauzule Výraz kolekce vSELECTseznam Poddotaz vSELECTseznamu Poddotaz označenýWITH READ ONLYSpojení, až na několik výjimek , jak je dokumentováno v příručce Oracle Database Administrator’s Guide

  • Prostřednictvím pohledu nemůžete aktualizovat více než jednu základní tabulku.

  • Navíc, pokud pohled byl vytvořen pomocí WITH CHECK , pak můžete pohled aktualizovat, pouze pokud výsledná data splňují definující dotaz pohledu.

  • Pokud table nebo základní tabulka view obsahuje jeden nebo více sloupců indexu domény, pak tento příkaz provede příslušnou rutinu aktualizace typu indexu.

  • Řádky nelze aktualizovat v materializovaném zobrazení jen pro čtení. Pokud aktualizujete řádky v zapisovatelném materializovaném zobrazení, pak databáze aktualizuje řádky z podkladové tabulky kontejneru. Aktualizace jsou však přepsány při další operaci obnovení. Pokud aktualizujete řádky v aktualizovatelném materializovaném pohledu, který je součástí skupiny materializovaného pohledu, pak databáze také aktualizuje odpovídající řádky v hlavní tabulce.

Viz Také:

  • Příručka pro vývojáře Oracle Data Cartridge pro více informací o rutinách aktualizace typu indexu

  • CREATE MATERIALIZED VIEW pro informace o vytváření aktualizovatelných materializovaných pohledů

PARTITION | SUBPARTITION

Zadejte název oddílu nebo podčásti v rámci table cílené na aktualizace. Při aktualizaci hodnot v dělené tabulce nemusíte zadávat název oddílu. V některých případech však může být zadání názvu oddílu efektivnější než složitější where_clause .

Viz také:

„Odkazy na rozdělené tabulky a indexy“ a „Aktualizace oddílu: příklad“

dblink

Upřesnit úplný nebo částečný název databázového odkazu na vzdálenou databázi, kde t objekt se nachází. Odkaz na databázi můžete použít k aktualizaci vzdáleného objektu, pouze pokud používáte distribuovanou funkčnost Oracle Database.

Pokud vynecháte dblink,, pak databáze předpokládá, že objekt je v místní databázi.

Viz také:

„Odkazy na objekty ve vzdálených databázích“ pro informace o odkazování na odkazy na databázi

subquery_restriction_clause

Použijte subquery_restriction_clause k omezení poddotazu jedním z následujících způsobů:

POUZE PRO ČTENÍ Určete WITH READ ONLY k označení, že tabulku nebo pohled nelze aktualizovat.

S KONTROLA MOŽNOSTI Určete WITH CHECK OPTION k označení, že Oracle Database zakazuje jakékoli změny v tabulce nebo pohledu, které by vedly řádky, které nejsou zahrnuty v poddotazu. Při použití v poddotazu příkazu DML můžete tuto klauzuli zadat v poddotazu v klauzuli FROM, ale ne v poddotazu v WHERE klauzule.

Omezení CONSTRAINT Zadejte název omezení CHECK OPTION. Pokud tento identifikátor vynecháte, Oracle automaticky přiřadí omezení omezení ve tvaru SYS_C n, kde n je celé číslo, které dělá název omezení jedinečný v databázi.

Viz také:

„Použití klauzule WITH CHECK OPTION: Example“

table_collection_expression

table_collection_expression umožňuje informovat společnost Oracle, že s hodnotou collection_expression je třeba zacházet s operacemi dotazu a DML jako s tabulkou. collection_expression může být poddotaz, sloupec, funkce nebo konstruktor kolekce. Bez ohledu na jeho formu musí vrátit hodnotu kolekce – tj. Hodnotu, jejíž typem je vnořená tabulka nebo varray. Tento proces extrakce prvků kolekce se nazývá unnesting kolekce.

Volitelné plus (+) je relevantní, pokud se připojujete k výrazu TABLE s nadřazeným prvkem stůl. + Vytváří vnější spojení dvou, takže dotaz vrací řádky z vnější tabulky, i když je výraz kolekce null.

Poznámka:

V dřívějších verzích Oracle když collection_expression byl poddotaz, table_collection_expression byl vyjádřen jako THE subquery.Toto použití je nyní zastaralé.

Pomocí table_collection_expression můžete aktualizovat řádky v jedné tabulce na základě řádků z jiné tabulky. Můžete například zahrnout čtyři čtvrtletní prodejní tabulky do roční prodejní tabulky.

t_alias

Zadejte korelační název (alias) pro tabulku, pohled nebo poddotaz, na který se bude odkazovat jinde v prohlášení. Tento alias je vyžadován, pokud DML_table_expression_clause odkazuje na jakékoli atributy typu objektu nebo metody typu objektu.

Viz také:

„Související aktualizace: Příklad „

Omezení DML_table_expression_clause Na toto ustanovení se vztahují následující omezení:

  • Toto prohlášení nelze provést, pokud table nebo základní tabulka view obsahuje jakékoli indexy domén označené IN_PROGRESS nebo FAILED.

  • Nelze vložit do oddílu, pokud jsou všechny postižené indexové oddíly označeny UNUSABLE.

  • V poddotazu DML_table_expression_clause nemůžete zadat order_by_clause.

  • Pokud zadáte index, oddíl indexu nebo pododdíl indexu, který byl označen UNUSABLE, pak příkaz UPDATE selže, pokud SKIP_UNUSABLE_INDEXES parametr relace byl nastaven na TRUE.

Viz také:

ALTER SESSION pro informace o SKIP_UNUSABLE_INDEXES parametr relace

update_set_clause

update_set_clause umožňuje nastavit hodnoty sloupců.

sloupec

Zadejte název sloupce objektu, který má být aktualizován. Pokud vynecháte sloupec tabulky z update_set_clause, hodnota tohoto sloupce zůstane nezměněna.

Pokud column odkazuje na atribut objektu LOB, pak jej musíte nejprve inicializovat s hodnotou empty nebo null. Nelze jej aktualizovat pomocí literálu. Pokud také aktualizujete hodnotu LOB pomocí jiné metody než přímého UPDATE příkazu SQL, musíte nejprve uzamknout řádek obsahující LOB. Další informace naleznete v části for_update_clause.

Pokud je column součástí klíče rozdělení tabulky rozdělené na tabulky, pak UPDATE selže, pokud ve sloupci změníte hodnotu, která by přesunula řádek do jiného oddílu nebo podčásti, pokud nepovolíte pohyb řádku. Přečtěte si row_movement_clause v CREATE TABLE nebo ALTER TABLE.

Navíc je-li column součástí klíč rozdělení tabulky rozdělené na seznamy, pak UPDATE selže, pokud zadáte hodnotu pro sloupec, která ještě v partition_value seznam jednoho z oddílů.

poddotaz

Zadejte poddotaz, který vrací přesně jeden řádek pro každý aktualizovaný řádek.

  • Pokud v update_set_clause zadáte pouze jeden sloupec, pak poddotaz může vrátit pouze jednu hodnotu.

  • Pokud v poli zadáte více sloupců update_set_clause, pak poddotaz musí vrátit tolik hodnot, kolik jste zadali sloupce.

  • Pokud poddotaz nevrací žádné řádky, pak sloupci je přidělena hodnota null.

  • Pokud toto subquery odkazuje na vzdálené objekty, pak UPDATE operace může běžet paralelně tak dlouho, dokud odkaz ce se nesmyčkuje zpět k objektu v místní databázi. Pokud však subquery v DML_table_expression_clause odkazuje na jakékoli vzdálené objekty, pak UPDATE operace bude probíhat sériově bez upozornění.

Pomocí flashback_query_clause v poddotazu můžete aktualizovat table s minulými údaji. Další informace o této klauzuli najdete v části flashback_query_clause z SELECT.

Viz také:

  • SELECT a „Používání poddotazů“

  • parallel_clause v dokumentaci CREATE TABLE

expr

Určete výraz, který vyřeší novou hodnotu přiřazenou příslušnému sloupci.

Viz také:

Kapitola 6 „Výrazy“ pro syntaxi a „Aktualizace tabulky objektů: příklad“

DEFAULT Určete DEFAULT a nastavte sloupec na hodnotu dříve určenou jako výchozí hodnota pro sloupec. Pokud pro příslušný sloupec nebyla zadána žádná výchozí hodnota, databáze nastaví sloupec na hodnotu null.

Omezení při aktualizaci na výchozí hodnoty Nelze zadat DEFAULT pokud aktualizujete zobrazení.

Klauzule VALUE

Klauzule VALUE umožňuje zadat celý řádek tabulky objektů.

Omezení klauzule VALUE Tuto klauzuli můžete zadat pouze pro tabulku objektů.

Poznámka:

Pokud vložíte řetězcové literály do sloupce RAW, pak během následujících dotazů provede Oracle Database úplnou kontrolu tabulky namísto použití jakéhokoli indexu, který by mohl existovat ve sloupci RAW.

Viz také:

„Aktualizace tabulky objektů: Příklad“

where_clause

where_clause umožňuje omezit řádky aktualizované na ty, pro které zadaný condition je pravda. Pokud tuto klauzuli vynecháte, databáze aktualizuje všechny řádky v tabulce nebo zobrazení. Syntaxi condition naleznete v kapitole 7 „Podmínky“.

where_clause určuje řádky v které hodnoty jsou aktualizovány. Pokud nezadáte where_clause, aktualizují se všechny řádky. Pro každý řádek, který splňuje where_clause, jsou sloupce nalevo od operátoru rovnosti (=) v update_set_clause nastaveny na hodnoty odpovídajících výrazů vpravo od operátora. Výrazy se vyhodnocují při aktualizaci řádku.

returns_clause

Vracící klauzule načte řádky ovlivněné příkazem DML. Tuto klauzuli můžete zadat pro tabulky a materializovaná zobrazení a pro zobrazení s jednou základní tabulkou.

Při práci na jednom řádku je příkaz DML s returning_clause může načíst výrazy sloupců pomocí ovlivněného řádku, řádku a REFs do ovlivněného řádku a uložit je do hostitelských proměnných nebo proměnných PL / SQL.

Při práci na více řádků, příkaz DML s returning_clause ukládá hodnoty z výrazů, řádků a REFs zahrnujících ovlivněné řádky v polích vazeb.

expr Každá položka v seznamu expr musí být platná syntaxe výrazu.

DO INTO označuje, že hodnoty změněných řádků mají být uloženy v proměnných uvedených v seznamu data_item.

data_item each data_item je hostitelská proměnná nebo proměnná PL / SQL, která ukládá načtenou expr hodnotu.

Pro každý výraz v seznamu RETURNING musíte v INTO seznam.

Omezení Na klauzuli RETURNING se vztahují následující omezení:

  • The expr je omezeno následovně:

    • Pro UPDATE a DELETE každý příkaz expr musí být jednoduchý výraz nebo výraz s jednou agregovanou funkcí. Ve stejném returning_clause nelze kombinovat jednoduché výrazy a výrazy agregované funkce s jednou sadou. U příkazů INSERT musí být každý expr jednoduchý výraz. Agregační funkce nejsou v klauzuli INSERT RETURNING podporovány.

    • Single- výrazy sady agregovaných funkcí nemohou obsahovat klíčové slovo DISTINCT.

  • Pokud obsahuje sloupec primárního klíče nebo jiný NOT NULL sloupec, pak se aktualizační příkaz nezdaří, pokud má tabulka a BEFORE UPDATE v něm definovaný spouštěč.

  • Nelze zadat returning_clause pro mnohostrannou vložku.

  • Tuto klauzuli nelze použít s paralelním DML nebo se vzdálenými objekty.

  • S touto klauzulí nelze načíst LONG typy.

  • Tuto klauzuli nemůžete určit pro pohled, na který byl definován INSTEAD OF spouštěč.

Viz také :

Uživatel PL / SQL “ s Guide and Reference for information on using the BULK COLLECT klauzule k vrácení více hodnot do proměnných kolekce

error_logging_clause

Error_logging_clause se chová v příkazu UPDATE stejně jako v příkazu INSERT. Další informace naleznete v prohlášení INSERT error_logging_clause.

Viz také:

„Vkládání do tabulky s protokolováním chyb: Příklad“

Příklady

Aktualizace tabulky: Příklady Následující prohlášení dává nulové provize všem zaměstnancům s úkolem SH_CLERK:

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

Následující prohlášení povýší Douglase Granta na manažera oddělení 20 s navýšením o 1 000 $:

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

Následující prohlášení zvyšuje plat zaměstnance v employees tabulka v databázi remote:

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

Následující příklad ukazuje následující syntaktické konstrukty UPDATE prohlášení:

  • Obě formy update_set_clause společně v jednom prohlášení

  • Korelovaný poddotaz

  • A where_clause k omezení aktualizovaných řádků

Předchozí příkaz UPDATE provádí následující operace:

  • Aktualizuje pouze ty zaměstnance, kteří pracují v Ženevě nebo Mnichově (pobočky 2900 a 2700)

  • Nastaví department_id pro tyto zaměstnance department_id odpovídající Bombaji (location_id 2100)

  • Nastaví plat každého zaměstnance na 1,1násobek průměrného platu jeho oddělení

  • Nastaví provizi každého zaměstnance na 1,5násobek průměrné provize jeho oddělení

Aktualizace oddílu: Příklad Následující příklad aktualizuje hodnoty v jednom oddílu sales tabulky:

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

Aktualizace tabulky objektů: Příklad Následující příkaz vytvoří dvě tabulky objektů, people_demo1 a people_demo2 objektu people_typ vytvořeného v kolekcích tabulek: Příklady. Příklad ukazuje, jak aktualizovat řádek people_demo1 výběrem řádku z people_demo2:

Příklad používá VALUE referenční funkce objektu v klauzuli SET i v poddotazu.

Korelovaná aktualizace: Příklad Příklad, který používá korelovaný poddotaz k aktualizaci vnořených řádků tabulky, viz „Kolekce tabulek: příklady“.

Použití klauzule RETURNING během UPDATE: Příklad Následující příklad vrací hodnoty z aktualizovaného řádku a uloží výsledek do PL / Proměnné SQL bnd1, bnd2, bnd3:

následující příklad ukazuje, že můžete zadat agregovanou funkci s jednou sadou ve výrazu vracející se klauzule:

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

Articles
Previous Post

Nakupujte v USA online obchody a dodáváme do Indie za 2-4 dny!

Next Post

Plemena modrých psů - Co je dělá tak krásnými?

Napsat komentář Zrušit odpověď na komentář

Nejnovější příspěvky

  • Nejlepší fotografické školy na světě, 2020
  • Sovereign Citizens Take their Anti-Government Philosophy to the Roads
  • Průvodce náklady na opravy Stucco
  • Muckrakers (Čeština)
  • Precision Oncology (Čeština)

Archivy

  • Únor 2021
  • Leden 2021
  • Prosinec 2020
  • Listopad 2020
  • Říjen 2020
  • Září 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.