Avatar billede DummeDitte Nybegynder
14. maj 2010 - 08:25 Der er 3 kommentarer og
1 løsning

Foreign f*cking keys

Åhhh - eksperter!

Jeg er ved at blive desperat over MySQL.
Jeg har 4 tabeller (eller, jeg har flere - men lige nu er det kun dem der er relevante).
De ser sådan her ud:

create table regnskabspost (
  postid int not null auto_increment,
  dato Date,
  belob double,
  beskrivelse varchar(100),
  betalt boolean,
  primary key (postid))

create table konto (
  kontoid int not null auto_increment,
  navn varchar(45),
  beskrivelser varchar(100),
  primary key (kontoid))

create table betalingsform (
  betalingsformid int not null auto_increment,
  titel varchar(25),
  beskrivelse varchar(75),
  primary key (betalingsformid))

create table postering (
  postid int not null,
  kontoid int not null,
  betalingsformid int not null,
  primary key(postid, kontoid, betalingsformid),
  foreign key (postid) references postering(postid),
  foreign key (kontoid) references konto(kontoid),
  foreign key (betalingsformid) references betalingsform(betalingsformid))

Jeg forsøger så at insert'e en ny regnskabspost, og dermed en ny postering der knytter regnskabsposten sammen med konto- og betalingsformoplysninger.
Første step er fx.:

insert into regnskabspost (dato, belob, beskrivelse, betalt) values ('2010-5-14', 200.0, 'Test', true);

Herfra udtrækker jeg det nye postid, lad os sige det er 1 (det virker, har testet) - som så bruges til andet step:

insert into postering (postID, kontoID, betalingsformID) values ( 1, 3, 2);

MEN - ved andet insert får jeg fejl "Cannot add or update a child row: a foreign key constraint fails (`ocalc`.`postering`, CONSTRAINT `postering_ibfk_1` FOREIGN KEY (`postid`) REFERENCES `postering` (`postid`))"

Hvorfor? Jeg begriber det simpelthen ikke.
Det hele er i øvrigt kodet i java, hvis det skulle have nogen relevans...

På forhånd tak for hjælpen!

/Ditte
Avatar billede erikjacobsen Ekspert
14. maj 2010 - 09:52 #1
Så i tabellen "postering" har du en fremmednøgle der peger på tabellen "postering"? Og du begriber det ikke?  ;)
Avatar billede DummeDitte Nybegynder
14. maj 2010 - 10:08 #2
Årh nej! Christ, jeg har siddet for længe med næsen begravet i det her når jeg ikke engang opdager den slags!:oD

Tak for de friske øjne - det var da dejlig nemt!
Svarer du?
Avatar billede erikjacobsen Ekspert
14. maj 2010 - 10:24 #3
:)  Nej tak, jeg samler slet ikke på point. Svar selv, og accepter dit eget svar.
Avatar billede DummeDitte Nybegynder
14. maj 2010 - 10:27 #4
Ok - fair nok.:o)

Tak for hjælpen i hvert fald!
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