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

Zkontrolujte, zda je objekt primárním klíčem pomocí OBJECTPROPERTY() na serveru SQL Server

Můžete použít OBJECTPROPERTY() funkce na serveru SQL Server ke kontrole, zda je objekt primárním klíčem.

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

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

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

Zde je rychlý příklad k demonstraci.

USE PK_Test;
SELECT OBJECTPROPERTY(901578250, 'IsPrimaryKey') AS [IsPrimaryKey];

Výsledek:

+----------------+
| IsPrimaryKey   |
|----------------|
| 1              |
+----------------+

V tomto případě PK_Test databáze má objekt s poskytnutým ID a je to primární 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('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];

Výsledek:

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

Výsledek:

+-------------+----------------+
| Object ID   | IsPrimaryKey   |
|-------------+----------------|
| 901578250   | 1              |
+-------------+----------------+

Příklad 3 – Když objekt NENÍ primární klíč

Co se stane, když objekt není primární klíč.

SELECT OBJECTPROPERTY(885578193, 'IsPrimaryKey') AS [IsPrimaryKey];

Výsledek:

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

Výsledek:

+-------------+----------------+-----------+
| Object ID   | IsPrimaryKey   | IsTable   |
|-------------+----------------+-----------|
| 885578193   | 0              | 1         |
+-------------+----------------+-----------+

Také jsem zkontroloval, zda je objekt tabulkou, 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 zadáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsPrimaryKey') AS [InvalidObject],
  OBJECTPROPERTY(12345678, 'IsPrimaryKey') 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. Chyba serveru SQL 4104:Vícedílný identifikátor nelze svázat.

  2. Jak připojit databázi mySQL pomocí C++

  3. Porovnání řetězců SQL, větší a menší než operátory

  4. Jak nastavit asynchronní replikaci mezi clustery MySQL Galera