Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden Sie OBJECTPROPERTY(), um herauszufinden, ob ein Objekt eine CHECK-Einschränkung in SQL Server ist

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.