Maison > base de données > tutoriel mysql > Comment récupérer la clé primaire d'une table dans SQL Server ?

Comment récupérer la clé primaire d'une table dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-04 14:43:43
original
236 Les gens l'ont consulté

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

Récupération de la clé primaire de table dans SQL Server à l'aide d'une requête SQL

Dans SQL Server, il existe plusieurs approches pour récupérer la clé primaire d'une table spécifique. Explorons-les :

Approche 1 :

Cette requête sélectionne le nom de colonne désigné comme clé primaire à l'aide de la fonction 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'
Copier après la connexion

Approche 2 :

Alternativement, vous peut utiliser une fonction système appelée sys.primary_keys pour récupérer les informations de clé primaire :

SELECT
  name,
  primary_key_id,
  object_id
FROM
  sys.primary_keys
WHERE
  object_id = OBJECT_ID('TableName')
ORDER BY
  primary_key_id;
Copier après la connexion

Comparaison avec la requête MySQL :

Notez que la requête MySQL fournie diffère légèrement des approches SQL Server. Dans SQL Server, vous ne pouvez pas utiliser l'instruction SHOW KEYS pour indiquer explicitement un nom de clé spécifique. Au lieu de cela, vous devez spécifier le CONSTRAINT_NAME de la contrainte de clé primaire à l'aide de OBJECTPROPERTY.

Requête idéale pour MySQL et SQL Server :

Malheureusement, il n'existe pas de SQL direct requête qui fonctionne de manière transparente pour MySQL et SQL Server pour récupérer la clé primaire. Cependant, vous pouvez utiliser une requête dynamique qui interroge différentes tables système en fonction du type de base de données, comme indiqué ci-dessous :

-- 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;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal