602SQL-Úplná dokumentace Index  

Systémový dotaz _IV_LOCKS

Systémový dotaz _iv_locks vrací seznam zámků, které jsou v době vytváření dotazu umístěny na záznamech tabulek či na definicích objektů (záznamy systémových tabulek). Také se zobrazují zámky na stránkách paměti (týká se zamykání interních struktur jako indexy). Pro každý zámek je v odpovědi na dotaz jeden záznam.

Odpověď na tento dotaz v době provádění aktualizací dat může být velmi rozsáhlá a může značně zatížit server. Totéž platí i pro zobrazení zámků pomocí okna Monitor (záložky Zámky).

V odpovědi jsou tyto sloupce (při zobrazení v okně Monitor jsou názvy přeloženy):

Jméno sloupce Typ Obsah
Schema_name CHAR(31) Jméno schématu (aplikace), do níž patří tabulka se zámkem; NULL pro systémové tabulky (většinou OBJTAB a TABTAB)
Table_name CHAR(31) Jméno tabulky, na jejíž záznam (záznamy) je zámek umístěn; NULL pro zámky na stránkách paměti
Record_number INT Číslo záznamu (absolutní), na němž je zámek umístěn. Jsou-li zamčeny všechny záznamy (tj. zámek je umístěn na celou tabulku), je zde hodnota -1. Je-li jméno tabulky prázdné a toto číslo neprázdné, jedná se o zámek na stránce paměti a číslo zde uvedené je číslo této paměťové stránky (slouží pouze pro interní potřebu).
Lock_type INT Typ zámku: zámek pro čtení = 128, zámek pro přepis = 64, dočasný zámek (do skončení transakce) pro přepis = 32, dočasný zámek pro čtení = 16
Owner_usernum INT Číslo uživatele (stejné číslo vrací funkce Client_number), který zámek umístil
Owner_name CHAR(31) Jméno uživatele
Object_name CHAR(31) Jméno objektu: v případě uzamčení definice objektu zámkem na záznam systémové tabulky TABTAB či OBJTAB je zde uvedeno jméno zamčeného (tj. editovaného) objektu aplikace

Příklad

SELECT table_name, record_number, owner_name
FROM _iv_locks
WHERE table_name NOT IN (NULL, 'tabtab', 'objtab')

Dotaz vrátí zámky na záznamech s výjimkou zámků na systémových tabulkách