Můžete použít OBJECTPROPERTY()
funkce v SQL Server, abyste zjistili, zda tabulka má nebo nemá omezení DEFAULT.
Chcete-li to provést, předejte ID objektu tabulky jako první argument a TableHasDefaultCnst
jako druhý argument. Funkce vrací 1
nebo 0
v závislosti na tom, zda má nebo nemá omezení DEFAULT.
Vrácená hodnota 1
znamená, že tabulka má omezení DEFAULT a hodnotu 0
znamená, že není.
Příklad 1 – Základní použití
Zde je rychlý příklad k demonstraci.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Výsledek:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
V tomto případě WideWorldImportersDW databáze má tabulku s poskytnutým ID a má omezení DEFAULT.
Příklad 2 – Získání ID objektu
Pokud znáte název tabulky, ale neznáte její ID, můžete použít OBJECT_ID()
funkce pro načtení ID na základě jeho názvu.
Příklad:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Výsledek:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
Jedná se o stejný objekt z předchozího příkladu.
Zde je to opět s výstupem ID samostatně.
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Výsledek:
+-------------+-----------------------+ | Object ID | TableHasDefaultCnst | |-------------+-----------------------| | 1013578649 | 1 | +-------------+-----------------------+
Příklad 3 – Když tabulka NEMÁ VÝCHOZÍ omezení
Zde je to, co se stane, když tabulka nemá výchozí omezení.
SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Výsledek:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 0 | +-----------------------+
V tomto případě je objektem tabulka, jen nemá omezení DEFAULT.
Příklad 4 – Když objekt není tabulka
Co se stane, když databáze obsahuje objekt s ID, ale tento objekt není tabulka.
SELECT OBJECTPROPERTY( OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Výsledek:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | NULL | +-----------------------+
Příklad 5 – Objekt neexistuje
SQL Server předpokládá, že ID objektu je v aktuálním kontextu databáze. Pokud zadáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasDefaultCnst') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') AS [12345678];
Výsledek:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID, takže dostanu výsledek NULL.
Při chybě nebo v případě, že nemáte oprávnění k zobrazení objektu, získáte také hodnotu NULL.