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.