Avatar billede luctatic Nybegynder
17. februar 2003 - 11:07 Der er 8 kommentarer og
1 løsning

Primær nøgle + ikke rette

Når man har en primær nøgle vil det jo være praktisk hvis man ikke kunne ændre i value af det felt hvor den er, men jeg kan ikke finde noget sted i mySQL hvor det kan sættes. Jeg har prøvet både EMS MySQL manager, og MySQL Control Center som begge er geniale værktøjer som gør det nemt og hurtigt at oprette tabeller, men lige præcis den setting med primær nøgle kan jeg ikke finde.

Som så mange andre er jeg fordærvet af Access, hvor den jo klarede skidtet selv, men nu skal der bruges en db i en lidt større sammenhæng, så der vil MySQL nok være at foretrække, specielt da systemet helst skulle være gratis at udgive.
Avatar billede kichian Nybegynder
17. februar 2003 - 11:10 #1
Vent på at MySQL kommer i en stabil 4.0 version, da Fremmednøgle-CONTRAINTS ikke bliver håndhævet i version 3.x
Avatar billede luctatic Nybegynder
17. februar 2003 - 11:12 #2
Så der er simpelthen ikke nogen måde at sikre sig at man ikke kan overskrive den primære nøgle? For ellers kan det jo gå grumme galt hvis der bliver ændret i det unikke ID i en database og man pludseligt ikke kan finde sine data.
Avatar billede luctatic Nybegynder
17. februar 2003 - 12:07 #3
Hvordan i himlen opretter man overhovedet relationer? Jeg har PT en database, men de forskellige nøgler i tabellerne hænger på ingen måde sammen, hvilket gør at der for eksempel kan være brugere der bor på et postnummer der slet ikke findes. Det holder vist ikke helt.
Avatar billede roo104 Nybegynder
20. februar 2003 - 08:20 #4
Constraints opretes ved at ALTER den tabel der indeholder fremmednøglen.

ALTER TABLE tabel_med_fremmednøgle ADD (CONSTRAINT fk_navn FOREIGN KEY (primærnøgle_i_tabel_med_fremmednøgle) REFERENCES tabel_med_primærnøgle (primærnøgle_i_tabel_med_primærnøgle));

Ved ikke om du lige kan overskue det eller kan jeg hoste op med et andet eksempel.
Avatar billede roo104 Nybegynder
20. februar 2003 - 08:21 #5
Jeg har ikke haft problemer med constraints i mysql 4.0
Avatar billede luctatic Nybegynder
20. februar 2003 - 09:15 #6
Hmmmm, ok. Og hvad gør det så? Vi havde efterhånden sat os i hovedet at vi bare selv skulle sørge for at der ikke blev ændret i de forskellige tabeller eftersom vi 100% kunne bestemme db-tilgangen, men hvis det er muligt at lave constraints var det da muligt at der kunne ændres lidt.
Avatar billede roo104 Nybegynder
20. februar 2003 - 10:05 #7
CONSTRAINT er det, hvor man i acces, trækker en streg mellem tabeller, kan ikke huske hvad dte hedder. Man kan vælge mellem kaskadevis opdatering og sletning..
Det samme kan man i mysql

ALTER TABLE tabel_med_fremmednøgle ADD (CONSTRAINT fk_navn FOREIGN KEY (primærnøgle_i_tabel_med_fremmednøgle) REFERENCES tabel_med_primærnøgle (primærnøgle_i_tabel_med_primærnøgle) ON UPDATE/DELETE CASCADE);

Så har du præcis det samme som acces kommer med.

Mere kan ses her:
http://www.mysql.com/doc/en/CREATE_TABLE.html
Avatar billede roo104 Nybegynder
20. februar 2003 - 10:09 #8
Et eksempel på postnummer. Man skal ikke kunne slette et postnummer hvis det eksister i en anden tabel.

tabel ansat ser sådan her ud:
id | navn | postnummer
----------------------
1 | Jonas | 2750

tabel postnummer:
postnummer | bynavn
--------------------
  2750    | Ballerup

Jeg må så ikke kunne slette 2750 i postnummer tabellen, da det er i ansat tabellen også.

ALTER TABLE ansat ADD (CONSTRAINT fk_ansat_postnummer FOREIGN KEY (postnummer) REFERENCES postnummer (postnummer) ON DELETE CASCADE);
Avatar billede luctatic Nybegynder
20. februar 2003 - 21:49 #9
Lyder som det jeg har spurgt om - spørgsmålet er så om jeg overhovedet har brug for det eftersom mit program den eneste der kan tilgå databasen. Men det ville nok ikke SKADE at lægge disse contraints ind hvor det er ønskeligt. Takker for svaret.
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