Heim >Datenbank >MySQL-Tutorial >Wie rufe ich den Primärschlüssel einer Tabelle in SQL Server ab?

Wie rufe ich den Primärschlüssel einer Tabelle in SQL Server ab?

Barbara Streisand
Barbara StreisandOriginal
2025-01-04 14:43:43256Durchsuche

How to Retrieve a Table's Primary Key in SQL Server?

Tabellen-Primärschlüssel in SQL Server mithilfe einer SQL-Abfrage abrufen

In SQL Server gibt es mehrere Ansätze, um den Primärschlüssel einer bestimmten Tabelle abzurufen. Lassen Sie uns sie untersuchen:

Ansatz 1:

Diese Abfrage wählt den Spaltennamen aus, der mit der OBJECTPROPERTY-Funktion als Primärschlüssel festgelegt ist:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)), 'IsPrimaryKey') = 1
AND TABLE_NAME = 'TableName' AND TABLE_SCHEMA = 'Schema'

Ansatz 2:

Alternativ können Sie verwenden eine Systemfunktion namens sys.primary_keys zum Abrufen der Primärschlüsselinformationen:

SELECT
  name,
  primary_key_id,
  object_id
FROM
  sys.primary_keys
WHERE
  object_id = OBJECT_ID('TableName')
ORDER BY
  primary_key_id;

Vergleich mit MySQL-Abfrage:

Beachten Sie, dass sich die bereitgestellte MySQL-Abfrage geringfügig von der unterscheidet SQL Server-Ansätze. In SQL Server können Sie die SHOW KEYS-Anweisung nicht verwenden, um explizit einen bestimmten Schlüsselnamen anzugeben. Stattdessen müssen Sie den CONSTRAINT_NAME der Primärschlüsseleinschränkung mit OBJECTPROPERTY angeben.

Ideale Abfrage für MySQL und SQL Server:

Leider gibt es kein direktes SQL Abfrage, die sowohl für MySQL als auch für SQL Server nahtlos funktioniert, um den Primärschlüssel abzurufen. Sie können jedoch eine dynamische Abfrage verwenden, die verschiedene Systemtabellen basierend auf dem Datenbanktyp abfragt, wie unten gezeigt:

-- Check the database type
IF @@SERVERNAME LIKE '%MySQL%'
BEGIN
  SET @sqlQuery = 'SHOW KEYS FROM tablename WHERE Key_name = ''PRIMARY''';
END
ELSE
BEGIN
  SET @sqlQuery = 'SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + ''.' + QUOTENAME(CONSTRAINT_NAME)), ''IsPrimaryKey'') = 1 AND TABLE_NAME = ''TableName'' AND TABLE_SCHEMA = ''Schema''';
END

EXEC sp_executesql @sqlQuery;

Das obige ist der detaillierte Inhalt vonWie rufe ich den Primärschlüssel einer Tabelle in SQL Server ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn