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.