Heim >Datenbank >MySQL-Tutorial >Wie rufe ich den Primärschlüssel einer Tabelle in SQL Server ab?
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!