Insert

c/c++pascal

trecnum [cd_]Insert([cdp_t cdp], tcurstab curs);
function [cd_]Insert([cdp : cdp_t]; curs : tcurstab) : trecnum;

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