Maison > base de données > tutoriel mysql > Comment trouver la clé primaire d'une table dans SQL Server à l'aide de requêtes SQL ?

Comment trouver la clé primaire d'une table dans SQL Server à l'aide de requêtes SQL ?

DDD
Libérer: 2025-01-05 19:28:39
original
450 Les gens l'ont consulté

How to Find a Table's Primary Key in SQL Server Using SQL Queries?

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

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal