U kunt de OBJECTPROPERTY()
. gebruiken functie in SQL Server om te zien of een tabel al dan niet een DEFAULT-beperking heeft.
Om dit te doen, geeft u de object-ID van de tabel door als het eerste argument en TableHasDefaultCnst
als tweede argument. De functie retourneert een 1
of een 0
afhankelijk van of het een STANDAARD beperking heeft.
Een retourwaarde van 1
betekent dat de tabel een DEFAULT-beperking heeft en een waarde van 0
betekent dat dat niet zo is.
Voorbeeld 1 – Basisgebruik
Hier is een snel voorbeeld om te demonstreren.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Resultaat:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
In dit geval is de WideWorldImportersDW database heeft een tabel met de opgegeven ID en heeft een DEFAULT-beperking.
Voorbeeld 2 – De object-ID verkrijgen
Als u de naam van de tabel weet, maar niet de ID, kunt u de OBJECT_ID()
gebruiken functie om de ID op basis van zijn naam op te halen.
Voorbeeld:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Resultaat:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
Dit is hetzelfde object uit het vorige voorbeeld.
Hier is het weer met de ID-uitvoer afzonderlijk.
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Resultaat:
+-------------+-----------------------+ | Object ID | TableHasDefaultCnst | |-------------+-----------------------| | 1013578649 | 1 | +-------------+-----------------------+
Voorbeeld 3 – Wanneer de tabel GEEN STANDAARD beperking heeft
Dit is wat er gebeurt als de tabel geen DEFAULT-beperking heeft.
SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Resultaat:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 0 | +-----------------------+
In dit geval is het object een tabel, alleen heeft het geen DEFAULT-beperking.
Voorbeeld 4 – Wanneer het object geen tafel is
Dit is wat er gebeurt als de database wel een object met de ID bevat, maar dat object geen tabel is.
SELECT OBJECTPROPERTY( OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Resultaat:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | NULL | +-----------------------+
Voorbeeld 5 – Object bestaat niet
SQL Server gaat ervan uit dat de object-ID zich in de huidige databasecontext bevindt. Als u een object-ID uit een andere database doorgeeft, krijgt u ofwel een NULL-resultaat of krijgt u onjuiste resultaten.
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasDefaultCnst') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') AS [12345678];
Resultaat:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
In dit geval bevat de database geen objecten met die naam of ID, en dus krijg ik een NULL-resultaat.
Je krijgt ook NULL bij een fout of als je geen toestemming hebt om het object te bekijken.