je besoin d'un nom de clé primaire et nom de la colonne de clé primaire d'une table s'il vous plaît me dire ce que dois-je écrire requête ..S'il vous plaît me dire comment obtenir le nom de clé primaire dans SQL Server 2005
Répondre
declare @tableName as nvarchar(100)
set @tableName = 'table'
select i.name, c.name
from sys.index_columns ic
join sys.indexes i on ic.index_id=i.index_id
join sys.columns c on c.column_id=ic.column_id
where
i.[object_id] = object_id(@tableName) and
ic.[object_id] = object_id(@tableName) and
c.[object_id] = object_id(@tableName) and
is_primary_key = 1
Pourquoi seulement 100? Sysname peut être 128. – MartW
Aucune raison, vraiment. Je viens d'utiliser un nombre pair. –
@Jonas: 128 est même, aussi :-) –
Pas tout à fait ce que vous êtes cherchez, mais vous pouvez jouer avec elle:
SQL 2000: T-SQL to get foreign key relationships for a table
Voici une autre option qui utilise les vues INFORMATION_SCHEMA
SELECT
cu.Table_Catalog,
cu.Table_Schema,
cu.table_name,
cu.Constraint_name ,
cu.column_name
FROM
sys.indexes si
inner join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu
on si.name = cu.constraint_name
WHERE
is_primary_key = 1
+1 Ceci est préférable aux tables sys spécifiques à la base de données. (@soslo: comment peut-il être lent ??? :) –
Juste une note de performance - les tables select using sys sont deux fois plus rapides que celles qui utilisent les vues INFORMATION_SCHEMA
- 1. Comment répertoriez-vous la clé primaire d'une table SQL Server?
- 2. Clé cd SQL Server 2005
- 3. Obtenir la liste des tableaux à charge, SQL Server 2005
- 4. Obtenir le nom de la clé primaire de la table
- 5. SQL Server: nécessité d'ajouter une clé primaire
- 6. Convertir mot-clé dans SQL Server 2005
- 7. Blocage SQL Server 2005 sur la clé
- 8. mot-clé DISTINCT dans SQL Server 2005
- 9. SQL Server ajoute la clé primaire
- 10. S'il vous plaît me dire comment arrêter la recherche continue dans Visual Studio
- 11. Comment obtenir le nom des attributs de la table?
- 12. Erreur SQL Server 2005 récupération de l'enregistrement basé sur la colonne de la clé primaire Datetime
- 13. SQL Server 2005 - comment savoir si un champ est une clé primaire?
- 14. Modification de la valeur de clé primaire dans SQL Server 2005
- 15. Comment créer une clé primaire en tant que A1/D-M/100000 dans SQL Server 2005?
- 16. moyen le plus rapide pour retourner une valeur de clé primaire SQL Server 2005
- 17. Impact de changement d'une clé unique dans SQL Server 2005
- 18. s'il vous plaît me dire comment convertir le fichier xml pour datatable
- 19. Sql Type de données pour la clé primaire - SQL Server?
- 20. Comment obtenir le nom Index de IndexId dans SQL Server 2005
- 21. SQL Server: table de baisse clé primaire, sans connaître son nom
- 22. SQL Server 2005 Obtenir le nom de connexion du nom d'utilisateur
- 23. Table pas unique/alias: « usertns_group'1066 S'il vous plaît me dire si vous remarquez l'erreur
- 24. Dans une procédure stockée, comment puis-je obtenir le nom du sproc dans SQL Server 2005?
- 25. Sql Server CE Commande TableDirect basée sur la clé primaire
- 26. Sql Server 2005 violation de clé primaire sur une colonne d'identité
- 27. Zéro en tant que clé primaire dans SQL Server 2008
- 28. Comment définir une clé unique dans SQL Server 2005?
- 29. Comment puis-je obtenir la dernière clé primaire insérée?
- 30. SQL Server: non-null unique vs clé primaire
Je suppose que vous travaillez sur un utilitaire de base de données générique; Sinon, vous devez ** connaître ** cette information déjà. Je voudrais écrire une requête contre les tables système 'sysobects' et' sysindexes' pour obtenir cette information. Cependant, je suis conscient que MS ont fourni des vues de métadonnées utiles dans les versions ultérieures de SQL Server; et vous feriez mieux de les utiliser. –
Votre question se lit comme si vous vous attendez à ce qu'une clé primaire se réfère uniquement à une colonne - c'est loin d'être toujours vrai. Et bien sûr, toutes les tables n'ont pas de PK – MartW