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

Zjistěte, zda je objekt cizí klíč pomocí OBJECTPROPERTY() na serveru SQL Server

Můžete použít OBJECTPROPERTY() funkce v SQL Server zjistit, zda je objekt cizí klíč.

Chcete-li zjistit, zda je objekt cizí klíč, předejte ID objektu jako první argument a IsForeignKey jako druhý argument. Funkce vrací 1 nebo 0 podle toho, zda se jedná o cizí klíč.

Vrácená hodnota 1 znamená, že je cizí klíč a hodnotu 0 znamená, že není.

Příklad 1 – Základní použití

Zde je rychlý příklad k demonstraci.

USE Music;
SELECT OBJECTPROPERTY(981578535, 'IsForeignKey') AS [IsForeignKey];

Výsledek:

+----------------+
| IsForeignKey   |
|----------------|
| 1              |
+----------------+

V tomto případě Hudba databáze má objekt s poskytnutým ID a je to cizí klíč.

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('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Výsledek:

+----------------+
| IsForeignKey   |
|----------------|
| 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('FK_Albums_Artists') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('FK_Albums_Artists'), 'IsForeignKey') AS [IsForeignKey];

Výsledek:

+-------------+----------------+
| Object ID   | IsForeignKey   |
|-------------+----------------|
| 981578535   | 1              |
+-------------+----------------+

Příklad 3 – Když objekt NENÍ cizí klíč

Co se stane, když objekt není cizí klíč.

SELECT OBJECTPROPERTY(1525580473, 'IsForeignKey') AS [IsForeignKey];

Výsledek:

+----------------+
| IsForeignKey   |
|----------------|
| 0              |
+----------------+

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

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

SELECT 
  OBJECT_ID('RockAlbums') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsForeignKey') AS [IsForeignKey],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];

Výsledek:

+-------------+----------------+----------+
| Object ID   | IsForeignKey   | IsView   |
|-------------+----------------+----------|
| 1525580473  | 0              | 1        |
+-------------+----------------+----------+

V tomto případě jsem také zkontroloval, zda je objekt pohledem, a výsledek je pozitivní.

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('InvalidObject'), 'IsForeignKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsForeignKey') AS [12345678];

Výsledek:

+-----------------+------------+
| InvalidObject   | 12345678   |
|-----------------+------------|
| NULL            | NULL       |
+-----------------+------------+

V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID, takže dostanu výsledek NULL.

Při chybě nebo v případě, že nemáte oprávnění k zobrazení objektu, získáte také hodnotu NULL.


  1. Správa hesel a zdrojů v Oracle pomocí profilu

  2. SQL cast datetime

  3. Ladění výkonu SQLite

  4. Jak funguje operátor LIKE v SQLite