mercredi 14 janvier 2009

Obtenir la clé primaire d'une table sous SQL Server

Voici deux requêtes SQL qui permettent de connaître le nom du champ représentant la clé primaire d'une table sous SQL Server.

Requête # 1
SELECT       kcu.COLUMN_NAME
FROM INFORMATION_SCHEMA.table_constraints tc
INNER JOIN INFORMATION_SCHEMA.key_column_usage kcu
ON tc.CONSTRAINT_SCHEMA = kcu.CONSTRAINT_SCHEMA
AND tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.TABLE_SCHEMA = 'dbo'
AND tc.TABLE_NAME = 'nom_de_la_table'
AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
Requête # 2 :
SELECT       column_name
FROM INFORMATION_SCHEMA.key_column_usage
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1
AND table_name = 'nom_de_la_table'
À noter qu'on peut obtenir la liste des clés étrangères en remplacant IsPrimaryKey par IsForeignKey.

1 commentaire:

  1. pour des versions + récentes :

    SELECT column_name
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE CONSTRAINT_NAME = 'PRIMARY'
    AND table_name = 'nom_table'

    RépondreEffacer