Parametry
curs | číslo tabulky nebo otevřeného kurzoru |
[cdp | kontextová proměnná klienta] |
Popis
Funkce Insert
přidává nový prázdný záznam k tabulce nebo k editovatelnému kurzoru curs. Při vkládání se nový záznam přidá na první nalezené volné místo po smazaném a uvolněném záznamu v tabulce. Není proto zaručeno, že číslo vloženého záznamu bude větší než čísla ostatních (zrušených i nezrušených) neuvolněných záznamů v tabulce nebo že záznam bude vložen na konec tabulky.
Ve funkci Insert
nelze použít kurzor vzniklý spojením více tabulek nebo needitovatelný kurzor.
V přidaném záznamu budou všechny sloupce mít hodnoty NULL dle svých typů nebo implicitní hodnoty definované v návrhu tabulky. Toto má význam v těch případech, kdy k editované tabulce existují triggery - vložení záznamu vyvolá INSERT trigger, zapsání hodnot sloupců do tohoto záznamu pak UPDATE trigger (což je odlišná logika od vložení záznamu pomocí SQL příkazu INSERT).
Je-li v definici tabulky stanoveno, že některý sloupec nesmí mít hodnotu NULL, definujte též implicitní hodnotu tohoto sloupce, nebo Insert
a zápis do tohoto sloupce proveďte v jedné transakci. Jsou-li v tabulce definována integritní omezení, buď musí být splněna na implicitních hodnotách, anebo ještě ve stejné transakci musí být do sloupců zapsány vyhovující hodnoty.
Je-li curs podřízená tabulka v referenční integritě, vede zavolání funkce Insert
k porušení pravidel ref. integrity. Proveďte proto Insert
i zápis do hlídaného sloupce v jedné transakci.
Od verze 7 je k dispozici novější funkce Insert_record_ex
, která umožňuje vložit záznam současně i s hodnotami sloupců (stejně jako INSERT v SQL).
Efektivnějším způsobem práce s daty (vkládání, mazání, vyhledávání) je použití jazyka SQL, zvláště pak uložených procedur.
Hodnota funkce
Funkce vrací absolutní číslo přidaného záznamu. Toto číslo lze použít pro zápis do přidaného záznamu v tabulce resp. kurzoru curs.
Kontrolujte vždy výsledek operace! Pokud se operace neprovede, vrací se hodnota -1. Povahu chyby lze pak zjistit voláním funkce Signalize
.
Viz