Free_deleted

c/c++pascalsql

BOOL [cd_]Free_deleted([cdp_t cdp], ttablenum tablenum);
function [cd_]Free_deleted([cdp : cdp_t]; tablenum : ttablenum) : Boolean;
PROCEDURE Free_deleted(IN tablename CHAR(31))

Parametry

tablenum číslo tabulky
[cdp kontextová proměnná klienta]
tablename pouze v SQL - jméno tabulky

Popis

Funkce Free_deleted uvolní všechny zrušené záznamy v tabulce table. Místo, které tyto záznamy zabíraly, může být poté využito pro nové záznamy. Zrušené a uvolněné záznamy nelze později obnovit funkcí Undelete.

Parametrem table je číslo tabulky získané voláním funkce Find_object.

Funkce se neprovede, je-li otevřen editovatelný kurzor z této tabulky nebo jsou-li na tabulku umístěné zámky jiného uživatele. V obou případech bude následná funkce Signalize hlásit chybu "S objektem někdo pracuje". Zámky volajícího uživatele funkci neblokují.

Pokud v tabulce nezbude žádný platný záznam, pak čítač hodnot používaný ve sloupci s implicitní hodnotou unique se nastaví na nulu.

Jakožto procedura je implementováno Free_deleted i na straně serveru, aby bylo možno uvolňovat záznamy i z prostředí uložených procedur a triggerů. Jako parametr se používá řetězec se jménem tabulky. Příklad volání v SQL:

CALL Free_deleted("MY_TABLE")
Je-li pomocí funkce Set_sql_option nastaven příznak kompatibility SQLOPT_EXPLIC_FREE, uvolnění záznamu proběhne okamžitě po zrušení, takže Free_deleted není vůbec třeba používat. Využívá se v SQL komunikaci, kdy dvoustupňové mazání záznamů je na obtíž.

Před i po provedení funkce Free_deleted se vyvolá implicitní commit - nelze odvolat!.

Hodnota funkce

Funkce vrací hodnotu FALSE, pokud se akci podařilo úspěšně provést. V opačném případě vrací TRUE a povahu chyby lze zjistit voláním funkce Signalize.

Viz