sql >> Databáze >  >> RDS >> Sqlserver

Pomocí OBJECTPROPERTY() zjistěte, zda je objekt CHECK omezením na serveru SQL Server

V SQL Server můžete použít OBJECTPROPERTY() funkce ke zjištění, zda je objekt CHECK či nikoli omezení.

Tato funkce přijímá dva parametry:ID objektu a vlastnost, pro kterou ji hledáte.

Proto můžete předat ID objektu jako první argument a IsCheckCnst jako druhý a funkce vrátí buď 1 nebo 0 v závislosti na tom, zda se jedná o CHECK omezení.

Vrácená hodnota 1 znamená, že je a CHECK omezení a hodnotu 0 znamená, že není.

Příklad 1 – Kontrola omezení CHECK

Zde je rychlý příklad k demonstraci.

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

Výsledek:

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

V tomto případě Test databáze má objekt s poskytnutým ID a ve skutečnosti je to CHECK omezení.

Příklad 2 – Získání ID objektu

Pokud znáte název objektu, ale neznáte jeho ID, můžete použít OBJECT_ID() funkce pro načtení ID na základě jeho názvu.

Příklad:

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

Výsledek:

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

V tomto případě jsem zkontroloval stejný objekt z předchozího příkladu.

Zde je to opět s výstupem ID samostatně.

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

Výsledek:

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

Příklad 3 – Kontrola tabulky (tj. NE Omezení CHECK)

Co se stane, když objekt není CHECK omezení.

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

Výsledek:

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

V tomto případě databáze dělá ve skutečnosti mají objekt s tímto ID, ale objekt je ve skutečnosti tabulka, takže dostanu negativní výsledek.

Zde je to opět pomocí OBJECT_ID() .

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

Výsledek:

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

Příklad 4 – Objekt neexistuje

SQL Server předpokládá, že ID objektu je v aktuálním kontextu databáze. Pokud předáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
  OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];

Výsledek:

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

V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID.


  1. MySQL versus MariaDB

  2. Docker kontejner pro Postgres 9.1 neodhaluje port 5432 hostiteli

  3. Připojte HP-UX Itanium k SQL Server

  4. Provádění sady SQL dotazů pomocí dávkového souboru?