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'
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;
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;
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!