In SQL Server können Sie das OBJECTPROPERTY()
verwenden Funktion, um herauszufinden, ob ein Objekt ein CHECK
ist oder nicht Einschränkung.
Diese Funktion akzeptiert zwei Parameter:die Objekt-ID und die Eigenschaft, nach der Sie suchen.
Daher können Sie die Objekt-ID als erstes Argument und IsCheckCnst
übergeben als zweites, und die Funktion gibt entweder einen 1
zurück oder eine 0
je nachdem, ob es sich um einen CHECK
handelt oder nicht Zwang.
Ein Rückgabewert von 1
bedeutet, dass es ist ein CHECK
Einschränkung und einen Wert von 0
bedeutet, dass dies nicht der Fall ist.
Beispiel 1 – Prüfen einer CHECK-Einschränkung
Hier ist ein kurzes Beispiel zur Veranschaulichung.
USE Test; SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];
Ergebnis:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
In diesem Fall der Test Die Datenbank hat ein Objekt mit der bereitgestellten ID, und es ist tatsächlich ein CHECK
Einschränkung.
Beispiel 2 – Abrufen der Objekt-ID
Wenn Sie den Namen des Objekts kennen, aber nicht seine ID, können Sie die OBJECT_ID()
verwenden Funktion zum Abrufen der ID basierend auf ihrem Namen.
Beispiel:
SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Ergebnis:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
In diesem Fall habe ich dasselbe Objekt aus dem vorherigen Beispiel überprüft.
Hier wird nochmal mit der ID getrennt ausgegeben.
SELECT OBJECT_ID('chkEndDate') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Ergebnis:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 178099675 | 1 | +-------------+---------------+
Beispiel 3 – Überprüfen einer Tabelle (d. h. KEINE CHECK-Einschränkung)
Folgendes passiert, wenn das Objekt kein CHECK
ist Einschränkung.
SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];
Ergebnis:
+---------------+ | IsCheckCnst | |---------------| | 0 | +---------------+
In diesem Fall macht es die Datenbank habe tatsächlich ein Objekt mit dieser ID, aber das Objekt ist eigentlich eine Tabelle, also erhalte ich ein negatives Ergebnis.
Hier wird wieder OBJECT_ID()
verwendet .
SELECT OBJECT_ID('Individual') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];
Ergebnis:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 18099105 | 0 | +-------------+---------------+
Beispiel 4 – 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('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];
Ergebnis:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
In diesem Fall enthält die Datenbank keine Objekte mit diesem Namen oder dieser ID.