ホームページ >データベース >mysql チュートリアル >SQL Server でテーブルの主キーを取得するにはどうすればよいですか?

SQL Server でテーブルの主キーを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 14:43:43256ブラウズ

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

SQL クエリを使用した 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。