602SQL-Úplná dokumentace Index  

Příkaz INSERT (SQL)

příkaz_INSERT ::= INSERT INTO [schema.]jméno_tabulky [( jméno_sloupce {, jméno_ sloupce }… )] obsah
obsah ::= VALUES ( hodnota {, hodnota }… ) | DEFAULT VALUES | dotazový_výraz

Popis

Příkaz INSERT vloží do dané tabulky jeden nebo více záznamů. Jsou-li za jménem tabulky uvedena v závorkách jména sloupců, pak se zadané hodnoty zapíší po řadě do těchto sloupců, a do ostatních se zapíší implicitní hodnoty. Pokud se jména sloupců neuvedou, pak se hodnoty zapisují do všech sloupců tabulky postupně počínaje prvním.

Počet vložených záznamů je možné po provedení zjistit pomocí systémové proměnné @@ROWCOUNT.

Je-li tabulka prefixována jménem aplikace (na stejném serveru), tabulka se hledá v uvedené aplikaci (schématu).

Místo tabulky lze příkaz provádět i s pevným dotazem (VIEW), který umožňuje vkládání záznamů (toto se rozpozná již při překladu). Při tom se nekontroluje, zda zadané hodnoty odpovídají podmínce dotazu.

Příkaz INSERT vyvolá INSERT trigger pro každý vkládaný záznam. BEFORE INSERT trigger se provede PŘED vložením záznamu, AFTER INSERT trigger po vložení. Dojde-li v triggeru k chybě, je obou případech příkaz INSERT odvolán.

Je-li tabulka, na níž je příkaz INSERT prováděn, podřízenou tabulkou v aktivní referenční integritě (RI) a nově vkládané hodnoty porušují pravidlo RI, nastane chyba 40006 (REFERENTIAL_CONSTRAIN).

Uživatel, který vkládá záznamy, musí mít k této činnosti dostatek efektivních práv.


Příklady použití:

INSERT INTO Zamestnan (cislo, jmeno, prijmeni)
VALUES (55, 'Jan', 'Novák')

INSERT INTO Zamestnan DEFAULT VALUES

INSERT INTO Zamestnan
SELECT * FROM Kartoteka WHERE cis_oddel = 1

INSERT INTO Zamestnan (jmeno, prijmeni)
SELECT jmeno_n, prijmeni_n FROM Nabor WHERE prijaty

Záloha dat tabulky do jiné aplikace:

INSERT INTO Zaloha.Zamestnan 
SELECT * FROM Zamestnan

Viz