Avatar billede anders159 Nybegynder
09. juni 2004 - 15:32 Der er 9 kommentarer og
1 løsning

finde PrimærNøgler i en tabel...Hjælp

Jeg har brug for en metode, der kan give mig navnet på den eller de primær nøgler, der måtte befinde sig i en given tabel.

Håber nogen kan hjælpe.
Avatar billede arne_v Ekspert
09. juni 2004 - 15:34 #1
Som SQL sætning eller hvordan ?

Ellers kan du jo bare åbne EM og se det der.
Avatar billede venne Nybegynder
09. juni 2004 - 15:48 #2
Som SQL kunne det fx se sådan ud:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
  ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.TABLE_NAME = 'tabel'
  AND tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
Avatar billede anders159 Nybegynder
09. juni 2004 - 15:54 #3
hej venne

Det ser ok ud, men jeg kan dog ikke få det til at virke.

jeg har kun ændret 'tabel' til min egen tabel, og dette kører også igennem.
der kommer dog ikke noget resultat. så et eller andet er der galt.
Avatar billede venne Nybegynder
09. juni 2004 - 16:03 #4
Prøv:

SELECT tc.TABLE_NAME, tc.CONSTRAINT_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
  ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY tc.TABLE_NAME, tc.CONSTRAINT_NAME, ORDINAL_POSITION

Det skulle gerne give alle primærnøgler i hele databasen, hvis der er nogen.
Avatar billede anders159 Nybegynder
09. juni 2004 - 16:10 #5
hej igen :)

jeg ved ikke helt hvad der er galt og om jeg få ændret de rette parameter.

men når jeg tjekker en given tabel i enterprise manager, ser jeg fint de forskellige primærnøgler.

men både når jeg kører den først eller den anden select statement i QueryAnalyzer, får jeg bare enten Colum_name eller table_name, CONSTRAINT_NAME og Colum_name...

men der er igen resultater med.

så ved ikke helt hvad jeg gøre galt.....for der er masser af primærnøgler i databasen.
Avatar billede anders159 Nybegynder
09. juni 2004 - 16:33 #6
nu bliver det først mærkeligt...

når jeg tjekker det i queryanalyzer sker der intet, men højreklikker jeg på en tabel og vælger query og så kører det, kommer resultat fint.

så jeg siger 1000 tak for hjælpen.
Avatar billede arne_v Ekspert
09. juni 2004 - 16:35 #7
Lyder lidt som du kører det Master databasen ...
Avatar billede anders159 Nybegynder
09. juni 2004 - 16:38 #8
hey venne, ved ikke lige hvad der sker, men har prøvet at give dig points, men de står der sq stadig som ude.
Avatar billede venne Nybegynder
10. juni 2004 - 08:47 #9
Jeg tror arne har ret i at du har kørt i master-databasen. Men det er godt at det virker nu.
Avatar billede janus_007 Nybegynder
11. juni 2004 - 22:21 #10
venne bruger information_schema - topdollar *G* (MS fraråder user select i systemtabeller, derfor fandt de på at lave information_schema)

anyway, hvis du bare havde villet kende til informationen kunne du have brugt:

sp_helpconstraint ditTablename
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Lægemiddelstyrelsen

Løsningsarkitekt

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret