Sie können die OBJECTPROPERTY()
verwenden Funktion in SQL Server, um zu sehen, ob eine Tabelle eine DEFAULT-Einschränkung hat oder nicht.
Übergeben Sie dazu die Objekt-ID der Tabelle als erstes Argument und TableHasDefaultCnst
als zweites Argument. Die Funktion gibt eine 1
zurück oder eine 0
abhängig davon, ob es eine DEFAULT-Beschränkung hat oder nicht.
Ein Rückgabewert von 1
bedeutet, dass die Tabelle eine DEFAULT-Einschränkung und einen Wert von 0
hat bedeutet, dass dies nicht der Fall ist.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein kurzes Beispiel zur Veranschaulichung.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Ergebnis:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
In diesem Fall die WideWorldImportersDW Die Datenbank hat eine Tabelle mit der bereitgestellten ID und eine DEFAULT-Einschränkung.
Beispiel 2 – Abrufen der Objekt-ID
Wenn Sie den Namen der Tabelle kennen, aber nicht ihre ID, können Sie die OBJECT_ID()
verwenden Funktion zum Abrufen der ID basierend auf ihrem Namen.
Beispiel:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Ergebnis:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
Dies ist das gleiche Objekt aus dem vorherigen Beispiel.
Hier wird nochmal mit der ID getrennt ausgegeben.
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Ergebnis:
+-------------+-----------------------+ | Object ID | TableHasDefaultCnst | |-------------+-----------------------| | 1013578649 | 1 | +-------------+-----------------------+
Beispiel 3 – Wenn die Tabelle KEINE STANDARD-Einschränkung hat
Folgendes passiert, wenn die Tabelle keine DEFAULT-Einschränkung hat.
SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Ergebnis:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 0 | +-----------------------+
In diesem Fall ist das Objekt eine Tabelle, es hat nur keine DEFAULT-Einschränkung.
Beispiel 4 – Wenn das Objekt kein Tisch ist
Folgendes passiert, wenn die Datenbank ein Objekt mit der ID enthält, dieses Objekt jedoch keine Tabelle ist.
SELECT OBJECTPROPERTY( OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
Ergebnis:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | NULL | +-----------------------+
Beispiel 5 – Objekt existiert nicht
SQL Server geht davon aus, dass sich die Objekt-ID im aktuellen Datenbankkontext befindet. Wenn Sie eine Objekt-ID aus einer anderen Datenbank übergeben, erhalten Sie entweder ein NULL-Ergebnis oder falsche Ergebnisse.
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasDefaultCnst') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') AS [12345678];
Ergebnis:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
In diesem Fall enthält die Datenbank keine Objekte mit diesem Namen oder dieser ID, und daher erhalte ich ein NULL-Ergebnis.
Sie erhalten auch NULL bei einem Fehler oder wenn Sie keine Berechtigung zum Anzeigen des Objekts haben.