sql >> Database >  >> RDS >> Sqlserver

Gebruik OBJECTPROPERTY() om erachter te komen of een object een CHECK-beperking is in SQL Server

In SQL Server kunt u de OBJECTPROPERTY() functie om erachter te komen of een object al dan niet een CHECK . is beperking.

Deze functie accepteert twee parameters:de object-ID en de eigenschap waarvoor u deze controleert.

Daarom kunt u de object-ID als het eerste argument doorgeven, en IsCheckCnst als de tweede, en de functie retourneert ofwel een 1 of een 0 afhankelijk van of het een CHECK . is of niet beperking.

Een retourwaarde van 1 betekent dat het is een CHECK beperking, en een waarde van 0 betekent dat dat niet zo is.

Voorbeeld 1 – Een CHECK-beperking controleren

Hier is een snel voorbeeld om te demonstreren.

USE Test;
SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];

Resultaat:

+---------------+
| IsCheckCnst   |
|---------------|
| 1             |
+---------------+

In dit geval is de Test database heeft een object met de opgegeven ID, en het is in feite een CHECK beperking.

Voorbeeld 2 – De object-ID verkrijgen

Als u de naam van het object 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('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];

Resultaat:

+---------------+
| IsCheckCnst   |
|---------------|
| 1             |
+---------------+

In dit geval heb ik hetzelfde object uit het vorige voorbeeld gecontroleerd.

Hier is het weer met de ID-uitvoer afzonderlijk.

SELECT 
  OBJECT_ID('chkEndDate') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];

Resultaat:

+-------------+---------------+
| Object ID   | IsCheckCnst   |
|-------------+---------------|
| 178099675   | 1             |
+-------------+---------------+

Voorbeeld 3 – Een tabel controleren (d.w.z. GEEN CONTROLE-beperking)

Dit is wat er gebeurt als het object geen CHECK is beperking.

SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];

Resultaat:

+---------------+
| IsCheckCnst   |
|---------------|
| 0             |
+---------------+

In dit geval doet de database dat wel heb in feite een object met die ID, maar het object is eigenlijk een tabel, dus ik krijg een negatief resultaat.

Hier is het opnieuw met OBJECT_ID() .

SELECT 
  OBJECT_ID('Individual') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];

Resultaat:

+-------------+---------------+
| Object ID   | IsCheckCnst   |
|-------------+---------------|
| 18099105    | 0             |
+-------------+---------------+

Voorbeeld 4 – 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('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
  OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];

Resultaat:

+---------------------+------------+
| NonExistentObject   | 11111111   |
|---------------------+------------|
| NULL                | NULL       |
+---------------------+------------+

In dit geval bevat de database geen objecten met die naam of ID.


  1. Verzamelmethode:BESTAAT Functie in Oracle Database

  2. Verzachtende indexfragmentatie

  3. In wachtrij plaatsen in OneWay WCF-berichten met Windows Service en SQL Server

  4. het isoleren van een subtekenreeks in een tekenreeks vóór een symbool in SQL Server 2008