Array ( [0] => 15488218 [id] => 15488218 [1] => cswiki [site] => cswiki [2] => UPDATE [uri] => UPDATE [3] => [img] => [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => [oai] => [9] => [is_good] => [10] => [object_type] => [11] => 0 [has_content] => 0 [12] => [oai_cs_optimisticky] => ) Array ( [0] => [[SQL]] příkaz UPDATE upravuje data (záznamy) v [[relační databáze|relační databázi]]. Může být upraven jediný záznam, nebo i více záznamů najednou. Upravené záznamy musí odpovídat definované podmínce. [1] => [2] => UPDATE má následující syntaxi: [3] => [4] => [5] => UPDATE [6] => SET = [,...n] [7] => [FROM ] [8] => [WHERE ] [9] => [10] => [11] => Aby se příkaz UPDATE úspěšně provedl, musí mít uživatel práva na manipulaci dat v databázi. Nové hodnoty také nesmí kolidovat s podmínkami (např. [[primární klíč]], jedinečný [[index (databáze)|index]], podmínky CHECK a NOT NULL). [12] => [13] => == Příklady == [14] => Počáteční obsah tabulky ''T'' [15] => {|border=1 cellpadding=3 cellspacing=0 [16] => !C1||C2||C3 [17] => |- [18] => |100||a||x [19] => |- [20] => |105||b||x [21] => |- [22] => |110||c||x [23] => |} [24] => [25] => Pro nastavení sloupečku ''C1'' v tabulce ''T'' na hodnotu 1, ale pouze za podmínky že hodnota sloupečku ''C2'' je „a“. [26] => [27] => [28] => UPDATE T SET C1 = 1 WHERE C2 = 'a' [29] => [30] => [31] => {|border=1 cellpadding=3 cellspacing=0 [32] => !C1||C2||C3 [33] => |- [34] => |1||a||x [35] => |- [36] => |105||b||x [37] => |- [38] => |110||c||x [39] => |} [40] => [41] => Zvýšení hodnoty sloupečku ''C1'' o 1 pokud ''C2'' je „a“. [42] => [43] => [44] => UPDATE T SET C1 = C1 + 1 WHERE C2 = 'a' [45] => [46] => [47] => {|border=1 cellpadding=3 cellspacing=0 [48] => !C1||C2||C3 [49] => |- [50] => |2||a||x [51] => |- [52] => |105||b||x [53] => |- [54] => |110||c||x [55] => |} [56] => [57] => Přidání ke sloupečku ''C3'' řetězec „text“ pokud ''C2'' je „a“. [58] => [59] => UPDATE T SET C3 = CONCAT( 'text' , C1 ) WHERE C2 = 'a' [60] => [61] => [62] => {|border=1 cellpadding=3 cellspacing=0 [63] => !C1||C2||C3 [64] => |- [65] => |2||a||text2 [66] => |- [67] => |105||b||x [68] => |- [69] => |110||c||x [70] => |} [71] => [72] => == Další vlastnosti == [73] => === Vykonávání příkazu === [74] => U příkazu UPDATE se rozlišuje, které hodnoty jsou konstantní po dobu jeho vykonávání a které se mění s každým řádkem. Pokud hodnoty (nebo [[výraz]]y z nich), které příkaz UPDATE sloupcům přiřazuje, obsahují jména sloupců dané tabulky (nebo tabulek spojených přes [[JOIN]]), pak je [[systém řízení báze dat]] bere z každého aktuálního řádku. [75] => Například pro tabulku produktů se sloupečky cen bez a s DPH příkaz: [76] => [77] => UPDATE produkty SET cena_s_DPH = cena_bez_DPH * 1.20; [78] => [79] => aktualizuje cenu s DPH na základě ceny bez DPH u každého jednotlivého záznamu. [80] => [81] => Příkaz UPDATE mění hodnoty řádku v tom pořadí sloupců, ve kterém jsou v příkazu uvedeny, přičemž po každém přiřazení se mohou ty následující operovat s již změněnou hodnotou buňky. Mohou tak vzniknout konstrukce jako následující (v MySQL): [82] => [83] => [84] => UPDATE tabulka SET flags=flags|0x80, flags=flags&~0x40, cislo=flags+1 WHERE id=123; [85] => [86] => [87] => Pokud je v daném záznamu tabulky je hodnota číselného sloupce flags rovna např. 127 (tj. 7F hexadecimálně), pak první přiřazení u něj nastaví bit č. 8 (0x80 nebo též 128, bude tedy rovna 255), druhá část příkazu vynuluje bit č. 6 (0x40 nebo též 64, po přiřazení bude 191) a třetí část přiřadí sloupci cislo hodnotu tohoto již dvakrát změněného sloupce flags, navýšenou o jedničku (bude to hodnota 192 – vkládá se tedy již změněná hodnota po doposud proběhlých přiřazeních, nikoli hodnota před začátkem vykonávání příkazu). [88] => [89] => Pokud by například v poslední části příkazu byla syntaktická nebo jiná chyba (například sloupec cislo by v tabulce neexistoval), pak se příkaz UPDATE nespustí jako celek. Z tohoto úhlu pohledu je UPDATE [[atomická operace]]. To neplatí pro změnu více záznamů – pokud by například měnil data u 1000 záznamů a po 500. z nich by došlo k nějaké fatální chybě (např. vstupně výstupní chyba úložného média), prvních 500 záznamů by zůstalo změněných a druhá polovina nikoli. [90] => [91] => === Výchozí hodnota === [92] => Většina databázových systémů umožňuje nastavit hodnotu určeného sloupce na výchozí hodnotu použitím klíčového slova DEFAULT. To reprezentuje jakoukoli výchozí hodnotu, která byla u daného sloupce nadefinována. Pokud definována nebyla, [[SŘBD]] se buď pokusí přiřadit prázdné řetězce pro textové sloupce a nuly pro sloupce číselné, nebo příkaz skončí chybovou hláškou ke změně hodnoty buňky vůbec nedojde. Hodnotu DEFAULT většina databázových systémů umožňuje použít i ve výrazu, většinou pro to ale nemá využití. [93] => [94] => === Omezení počtu změněných záznamů === [95] => U příkaz UPDATE může být elegantně omezen maximálním počtem záznamů, které mohou být příkazem změněny. Omezení se provede klíčovým slovem LIMIT. Po dosažení tohoto počtu změněných záznamů se příkaz ukončí. Pro jistotu, že nezměníme více než jeden záznam, můžeme za příkaz vložit LIMIT 1;. Pokud je záznam, který se má měnit, identifikován klausulí [[WHERE]] pomocí hodnoty primárního klíče (jak tomu většinou je), je automaticky zajištěno, že záznam bude změněn maximálně jeden, protože více záznamů se stejnou hodnotou klíče v tabulce existovat nemůže. [96] => [97] => === INSERT…ON DUPLICATE KEY UPDATE… === [98] => {{viz též|INSERT#…ON DUPLICATE KEY}} [99] => Příkaz UPDATE může být též použit jako klausule u složené konstrukce INSERT…ON DUPLICATE KEY UPDATE…. V ní se v první řadě SŘBD snaží data vložit jako nový záznam, teprve v případě, že tento záznam existuje (což zjistí podle stejné hodnoty primárního klíče) provede nad tímto záznamem příkaz UPDATE. [100] => [101] => === Triggery === [102] => Příkaz UPDATE aktivuje před svým vykonáním [[trigger (databáze)|trigger]] (spoušť) definovaný s BEFORE UPDATE a po vykonání trigger s AFTER UPDATE. Toto samozřejmě platí, jsou-li příslušné spouště definovány. [103] => [104] => {{SQL}} [105] => [106] => [[Kategorie:SQL]] [] => )
good wiki

UPDATE

SQL příkaz UPDATE upravuje data (záznamy) v relační databázi. Může být upraven jediný záznam, nebo i více záznamů najednou.

More about us

About

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'SQL','relační databáze','primární klíč','index (databáze)','výraz','JOIN','systém řízení báze dat','atomická operace','SŘBD','WHERE','trigger (databáze)','Kategorie:SQL'