Recherche de la clé primaire d'une table à l'aide de requêtes SQL dans SQL Server
Dans SQL Server, l'obtention de la clé primaire d'une table à l'aide d'une requête SQL implique un léger effort approche différente par rapport à MySQL. Explorez les options de requête suivantes pour récupérer les informations de clé primaire :
Requête SQL Server :
Une requête couramment utilisée pour SQL Server est :
SELECT name AS PrimaryKey FROM sysobjects WHERE xtype = 'PK' AND name IN ( SELECT name FROM sysindexes WHERE id = object_id(TableName) )
Remplacez TableName par le nom réel de la table dans la requête.
Un autre serveur SQL Requête :
Une requête alternative pour SQL Server est fournie ci-dessous :
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'
Encore une fois, remplacez TableName et Schema par les valeurs appropriées.
Universel Requête pour MySQL et SQL Server (non recommandé) :
Bien qu'il n'existe pas d'équivalent direct de la requête MySQL mentionnée dans la question pour SQL Server, on peut utiliser une requête plus complexe qui devrait fonctionner dans les deux systèmes de bases de données :
SELECT T.COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS AS T LEFT JOIN (SELECT DISTINCT C.TABLE_NAME, C.COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS U JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS C ON U.TABLE_SCHEMA = C.TABLE_SCHEMA AND U.TABLE_NAME = C.TABLE_NAME AND U.CONSTRAINT_NAME = C.CONSTRAINT_NAME) AS S ON T.TABLE_NAME = S.TABLE_NAME AND T.COLUMN_NAME = S.COLUMN_NAME WHERE T.TABLE_SCHEMA = 'TableName_Schema' AND T.TABLE_NAME = 'TableName'
Bien que cette requête puisse fonctionner à la fois dans MySQL et SQL Server, elle est moins efficace et n'est pas recommandée pour des performances optimales. .
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!