V SQL Server můžete použít OBJECTPROPERTY()
funkce ke zjištění, zda je objekt CHECK
či nikoli omezení.
Tato funkce přijímá dva parametry:ID objektu a vlastnost, pro kterou ji hledáte.
Proto můžete předat ID objektu jako první argument a IsCheckCnst
jako druhý a funkce vrátí buď 1
nebo 0
v závislosti na tom, zda se jedná o CHECK
omezení.
Vrácená hodnota 1
znamená, že je a CHECK
omezení a hodnotu 0
znamená, že není.
Příklad 1 – Kontrola omezení CHECK
Zde je rychlý příklad k demonstraci.
USE Test; SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];
Výsledek:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
V tomto případě Test databáze má objekt s poskytnutým ID a ve skutečnosti je to CHECK
omezení.
Příklad 2 – Získání ID objektu
Pokud znáte název objektu, ale neznáte jeho ID, můžete použít OBJECT_ID()
funkce pro načtení ID na základě jeho názvu.
Příklad:
SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Výsledek:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
V tomto případě jsem zkontroloval stejný objekt z předchozího příkladu.
Zde je to opět s výstupem ID samostatně.
SELECT OBJECT_ID('chkEndDate') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Výsledek:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 178099675 | 1 | +-------------+---------------+
Příklad 3 – Kontrola tabulky (tj. NE Omezení CHECK)
Co se stane, když objekt není CHECK
omezení.
SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];
Výsledek:
+---------------+ | IsCheckCnst | |---------------| | 0 | +---------------+
V tomto případě databáze dělá ve skutečnosti mají objekt s tímto ID, ale objekt je ve skutečnosti tabulka, takže dostanu negativní výsledek.
Zde je to opět pomocí OBJECT_ID()
.
SELECT OBJECT_ID('Individual') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];
Výsledek:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 18099105 | 0 | +-------------+---------------+
Příklad 4 – Objekt neexistuje
SQL Server předpokládá, že ID objektu je v aktuálním kontextu databáze. Pokud předáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];
Výsledek:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID.