Avatar billede riversen Nybegynder
15. juni 2003 - 15:39 Der er 17 kommentarer og
1 løsning

Sammensat nøgle

Har en tabel hvor der er en primær nøgle. Nu skal det ændres således den primære nøgler istedet danner en sammensat nøgle med et felt i tabellen. Hvordan gør jeg det via phpmyadmin
Avatar billede razor Nybegynder
15. juni 2003 - 15:59 #1
Sætter hak i primary ved begge kolonner ved oprettelsen eller trykker edit ved nøglen og trykker add 1 column to index ?
Avatar billede riversen Nybegynder
15. juni 2003 - 16:53 #2
kan ikke finde det. kører det på dansk
Avatar billede roo104 Nybegynder
15. juni 2003 - 18:25 #3
du kan også køre en sql kommando
ALTER TABLE tabelnavn ADD CONSTRAINT constraintnavn PRIMARY KEY(Kolonne1, kolonne2);
Avatar billede roo104 Nybegynder
15. juni 2003 - 18:31 #4
det razor beskriver er vist også oprettelse af index
Avatar billede riversen Nybegynder
15. juni 2003 - 18:36 #5
hvad skal der stå i stedet for constraintnavn?
Avatar billede roo104 Nybegynder
15. juni 2003 - 18:38 #6
bare noget du finder på, det er så du kan ændre constriantet senere hen. eller droppe det
Avatar billede roo104 Nybegynder
15. juni 2003 - 18:40 #7
en go navngivningsregl er tabelnavn_kolonne_pk. Så kan man udfra tablenavn og tabelnavn gætte constraintnavnet.
Hvis det er fremmednøgler kan man bruge fk tilsidst
Avatar billede riversen Nybegynder
17. juni 2003 - 08:12 #8
jeg kører den her:
ALTER TABLE artikler ADD CONSTRAINT primaryKey PRIMARY KEY(artikel_id, kategoriId);

og får fejlen:
Fejl

SQL-forespørgsel : 

ALTER TABLE artikler ADD CONSTRAINT primaryKey PRIMARY KEY ( artikel_id, kategoriId )

MySQL returnerede:


Multiple primary key defined
Avatar billede roo104 Nybegynder
17. juni 2003 - 14:34 #9
oja det er nok fordi du allerede har en primary key. Jeg gætter på din artikel_id allerede er primary, prøv med:

ALTER TABLE artikler ADD CONSTRAINT artikler_pk PRIMARY KEY(kategoriId);
Avatar billede roo104 Nybegynder
17. juni 2003 - 14:35 #10
jeg ved ikke helt om man kan modifisere en tabel når først den er oprettet med 1 primary key til at have en sammensat, men det er et forsøg værd
Avatar billede roo104 Nybegynder
17. juni 2003 - 14:39 #11
noget helt andet, du har en artikel tabel og en kategoritabel. En artikel kan ligge i flere forskellige kategorier, og skal have en artikel knuttet til sig. Hvis det er sådan skal kategoriId være fremmednøgle i artikler men prima nøgle i tabellen med kategorier, eller hvordan ser din database struktur ud ?
Avatar billede roo104 Nybegynder
17. juni 2003 - 14:40 #12
Hvis det er tilfældet skal du have fat i sådan en her:

ALTER TABLE artikler ADD CONSTRAINT artikler_kategori_fk FOREIGN KEY(kategoriId) REFERENCES kategori(kategoriId);
Avatar billede riversen Nybegynder
18. juni 2003 - 07:44 #13
det virker ikke...jeg laver bare tabellen forfra
Avatar billede riversen Nybegynder
18. juni 2003 - 07:44 #14
og nej, det er ikke en mange til mange relation mellem kategori og artikler
Avatar billede roo104 Nybegynder
18. juni 2003 - 10:09 #15
mange til mange til mange implementeres med en ekstra tabel, men en til mange implementeres oftes med en fremmednøgle constraint imellem hvor at sikre konsistens mellem dem
Avatar billede riversen Nybegynder
18. juni 2003 - 13:35 #16
det ved jeg godt. Det er ikke databasedesign jeg spørger til ;-)
Avatar billede riversen Nybegynder
26. juni 2003 - 12:01 #17
hvordan kan jeg egentlig se hvilke constraints der er oprettet?
Avatar billede roo104 Nybegynder
26. juni 2003 - 22:22 #18
Ved ikke helt om du kan se dem med
SHOW TABLE STATUS FROM tabelnavn
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