OVH Cloud OVH Cloud

Trouver une cle primaire

5 réponses
Avatar
Christian
bonjour,
existe t'il un moyen de savoir quelle la cle primaire d'une table et si
celle ci est auto incrémentée

merci

5 réponses

Avatar
Christian Robert
Bonjour,

Avec cette requête :

SELECT cst.name AS nompk, obj.name as nomtable, col.name as nomchamp,
col.status
FROM sysobjects AS cst
JOIN sysindexes AS idx ON cst.name = idx.name
JOIN sysindexkeys AS idk ON idx.indid = idk.indid AND idk.id = idx.id
JOIN sysobjects AS obj ON cst.parent_obj = obj.id
JOIN syscolumns AS col ON col.colid = idk.colid AND idx.id = col.id
WHERE cst.xtype = 'PK'
ORDER BY cst.name, idk.keyno

On obtient le nom de la clef (premier champ), le nom de la table (deuxième
champ), le nom du ou des champs de la clef (troisième champ) et le status du
champ (quatrième champ) qui vaut 128 si celui-ci est identity
(auto-incrémentée).

Ne pas oublier que la clef peut être composite, c'est à dire comporté
plusieurs champs, c'est pour cela que cette requête est si complexe.

--
Cordialement,
Christian Robert http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration


"Christian" a écrit :

bonjour,
existe t'il un moyen de savoir quelle la cle primaire d'une table et si
celle ci est auto incrémentée

merci



Avatar
Med Bouchenafa
sp_primarykeys

--
Bien cordialement
Med Bouchenafa
"Christian" a écrit dans le message de news:

bonjour,
existe t'il un moyen de savoir quelle la cle primaire d'une table et si
celle ci est auto incrémentée

merci


Avatar
Rudi Bruchez
Christian a écrit:

existe t'il un moyen de savoir quelle la cle primaire d'une table et si
celle ci est auto incrémentée



Bonjour,

troisième solution :

SELECT c.TABLE_NAME,
k.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k ON c.CONSTRAINT_NAME k.CONSTRAINT_NAME
WHERE c.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY c.TABLE_NAME, k.COLUMN_NAME


--
Rudi Bruchez
Consultant indépendant
modélisation, administration, optimisation,
Solutions MS SQL Server et informatique libre.
MCDBA, SCJP2
http://www.babaluga.com/
Avatar
Chris
Christian a écrit :
bonjour,
existe t'il un moyen de savoir quelle la cle primaire d'une table et si
celle ci est auto incrémentée

merci


merci de votre aide mais comment faire pour savoir si cette clé est
autoincremente mis a part de lire le type_name et si celui est int
identity alors c une autoincrementation

merci
Avatar
Rudi Bruchez
Chris a écrit:

merci de votre aide mais comment faire pour savoir si cette clé est
autoincremente mis a part de lire le type_name et si celui est int
identity alors c une autoincrementation




SELECT c.TABLE_NAME,
k.COLUMN_NAME,
COLUMNPROPERTY(OBJECT_ID(c.TABLE_NAME), k.COLUMN_NAME, 'IsIdentity') as
IS_IDENTITY
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k ON c.CONSTRAINT_NAME k.CONSTRAINT_NAME
WHERE c.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY c.TABLE_NAME, k.COLUMN_NAME

--
Rudi Bruchez
Consultant indépendant
modélisation, administration, optimisation,
Solutions MS SQL Server et informatique libre.
MCDBA, SCJP2
http://www.babaluga.com/