Foreign key fejl Hjælp

Tags:    mysql java

Hejsa folkens på Udvikleren

Jeg er igang med et større projekt, hvor jeg er stødt på et problem.

Har to tabeller, en varetabel hvor varenummer er primærnøgle, og en statistik tabel hvor varenummer er fremmednøgle.

De to tabeller kan ses her: http://pastebin.com/3Q3MRzDT

I varetabellen har vi indtastet oplysningerne manuelt. I systemet kan der sælges nogle vare. Når der bliver solgt en vare, bliver der lavet et kald i java til databasen hvor, der skal indsættes følgende

et ID (som jo er primærnøglen i statistik tabellen),
varenummer for varen som blev solgt (som er fremmednøglen i statistiktabellen),
profit som udregnes,
antalsolgte vare i alt,
og profitsamlet.

Grundet varenummer skal være der, er jo at man skal se hvor mange antal solgte vare man har solgt af netop den specifikke vare, som et eksempel.

når jeg prøver at sætte oplysningerne ind i statistiktabellen ved et execute.update command i java får jeg følgende fejl:

Cannot add or update a child row: a foreign key constraint fails (`test`.`statistiktabel`, CONSTRAINT `fk_Perstatistiktabel` FOREIGN KEY (`varenummer`) REFERENCES `varetabel` (`varenummer`))

Har søgt lidt på nettet, og synes ikke jeg helt forstår hvordan jeg løser mit problem.

Håber en kan/vil hjælpe :)


UPDATE:

Regner med vi snakker om Referentiel integritet som nok er fejlen her. Jeg skal have den til at sætte check fra, så jeg kan update mit statistik tabel med varenummer

Ligenu har jeg disse 3 SQL statements:

String SetCheckOff = "SET foreign_key_checks = 0";

String SetCheckOn = "SET foreign_key_checks = 1;";

String insertStatistik = "insert into statistiktabel values (ID = 1 , varetabel_nummer = '" + varenummer + "' , profit = NULL, Antalsolgt = " + stk + ", samletprofit = NULL)";

Koden i java som køre ser således ud:

try
{
da.executeQuery(SetCheckOff);
da.executeUpdate(insertStatistik);
{


}

}catch (SQLException e) {
e.printStackTrace();
}

Er det en forkert måde at køre den check på?



Indlæg senest redigeret d. 19.11.2013 01:40 af Bruger #17615
t