ホームページ >データベース >mysql チュートリアル >SQL Server でテーブルの主キーを取得するにはどうすればよいですか?
SQL Server では、特定のテーブルの主キーを取得する方法がいくつかあります。それらを調べてみましょう:
アプローチ 1:
このクエリは、OBJECTPROPERTY 関数を使用して主キーとして指定された列名を選択します:
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'
アプローチ2:
または、sys.primary_keys というシステム関数を使用して主キー情報を取得できます:
SELECT name, primary_key_id, object_id FROM sys.primary_keys WHERE object_id = OBJECT_ID('TableName') ORDER BY primary_key_id;
MySQL クエリとの比較:
提供されている MySQL クエリは SQL Server のアプローチとは若干異なることに注意してください。 SQL Server では、SHOW KEYS ステートメントを使用して特定の Key_name を明示的に指定することはできません。代わりに、OBJECTPROPERTY を使用して主キー制約の CONSTRAINT_NAME を指定する必要があります。
MySQL と SQL Server の両方の理想的なクエリ:
残念ながら、直接的な SQL はありません。 MySQL と SQL Server の両方でシームレスに機能して主キーを取得するクエリ。ただし、以下に示すように、データベースの種類に基づいてさまざまなシステム テーブルをクエリする動的クエリを使用できます。
-- 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;
以上がSQL Server でテーブルの主キーを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。