I SQL Server kan du bruge OBJECTPROPERTY() funktion til at finde ud af, om et objekt er en CHECK begrænsning.
Denne funktion accepterer to parametre:objekt-id'et og den egenskab, som du tjekker det for.
Derfor kan du sende objekt-id'et som det første argument og IsCheckCnst som den anden, og funktionen returnerer enten en 1 eller en 0 afhængigt af om det er en CHECK begrænsning.
En returværdi på 1 betyder, at det er en CHECK begrænsning og en værdi på 0 betyder, at det ikke er det.
Eksempel 1 – Kontrol af en CHECK-begrænsning
Her er et hurtigt eksempel at demonstrere.
USE Test; SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];
Resultat:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
I dette tilfælde er Test databasen har et objekt med det angivne ID, og det er faktisk en CHECK begrænsning.
Eksempel 2 – Hentning af objekt-id'et
Hvis du kender objektets navn, men ikke dets ID, kan du bruge OBJECT_ID() funktion for at hente ID'et baseret på dets navn.
Eksempel:
SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Resultat:
+---------------+ | IsCheckCnst | |---------------| | 1 | +---------------+
I dette tilfælde kontrollerede jeg det samme objekt fra det forrige eksempel.
Her er den igen med ID-udgangen separat.
SELECT
OBJECT_ID('chkEndDate') AS [Object ID],
OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
Resultat:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 178099675 | 1 | +-------------+---------------+
Eksempel 3 – Kontrol af en tabel (dvs. IKKE en KONTROL-begrænsning)
Her er, hvad der sker, når objektet ikke er en CHECK begrænsning.
SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];
Resultat:
+---------------+ | IsCheckCnst | |---------------| | 0 | +---------------+
I dette tilfælde gør det databasen faktisk har et objekt med det ID, men objektet er faktisk en tabel, så jeg får et negativt resultat.
Her bruger den igen OBJECT_ID() .
SELECT
OBJECT_ID('Individual') AS [Object ID],
OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];
Resultat:
+-------------+---------------+ | Object ID | IsCheckCnst | |-------------+---------------| | 18099105 | 0 | +-------------+---------------+
Eksempel 4 – Objekt eksisterer ikke
SQL Server antager, at objekt-id'et er i den aktuelle databasekontekst. Hvis du sender et objekt-id fra en anden database, får du enten et NULL-resultat, eller du får forkerte resultater.
SELECT
OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];
Resultat:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
I dette tilfælde indeholder databasen ingen objekter med det pågældende navn eller ID.