150 votes

SQL Server: Obtenir la clé primaire de la table à l'aide de requête sql

Double Possible:
Comment avez-vous liste la clé primaire d'une table SQL Server?

Je veux obtenir un particulier de la table de clé primaire à l'aide de requêtes SQL pour SQL Server base de données.

Dans MySQL , je suis en utilisant la requête suivante pour obtenir la table de clé primaire:

SHOW KEYS FROM tablename WHERE Key_name = 'PRIMARY'

Quel est l'équivalent de la requête ci-dessus pour SQL Server ?.

Si Il y a une question qui va travailler pour MySQL et SQL Server , puis Il sera un cas idéal.

Merci

162voto

Awan Points 2985

J'ai aussi trouvé un autre pour SQL Server:

SELECT column_name
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1
AND table_name = 'TableName'

93voto

Awan Points 2985

Trouvé un autre:

SELECT KU.table_name as tablename,column_name as primarykeycolumn
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
and ku.table_name='yourTableName'
ORDER BY KU.TABLE_NAME, KU.ORDINAL_POSITION;

J'ai testé cela sur SQL Server 2003/2005

64voto

astander Points 83138

À l'aide de SQL SERVER 2005, vous pouvez essayer

SELECT  i.name AS IndexName,
        OBJECT_NAME(ic.OBJECT_ID) AS TableName,
        COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM    sys.indexes AS i INNER JOIN 
        sys.index_columns AS ic ON  i.OBJECT_ID = ic.OBJECT_ID
                                AND i.index_id = ic.index_id
WHERE   i.is_primary_key = 1

Trouvé à SQL SERVER 2005 – Trouver des Tables Avec Contrainte de Clé Primaire dans la Base de données

12voto

InSane Points 7832

De mémoire, c'est ce

SELECT * FROM sys.objects
WHERE type = 'PK' 
AND  object_id = OBJECT_ID ('tableName')

ou cela..

SELECT * FROM sys.objects
WHERE type = 'PK' 
AND  parent_object_id = OBJECT_ID ('tableName')

Je pense que l'un d'entre eux doit probablement travailler en fonction de la façon dont les données sont stockées mais j'ai peur je n'ai pas accès à SQL effectivement vérifier la même.

5voto

Harendra Points 201
select * 
from sysobjects 
where xtype='pk' and 
   parent_obj in (select id from sysobjects where name='tablename')

cela fonctionne dans sql 2005

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X