Sql Stmt

Hallo !

Ich habe hier grad ein Problem und komme nicht weiter.

Mal folgende einfache Tabelle

Code:
create table kunde
(
geld bigint default -5000,
preis bigint unsigned default 6,
menge bigint default 500
);

Also ein Kunde der einen negativen Kontostand hat von - 5000 ! Er will nun etwas verkaufen ( menge ) zum aktuellen Preis.

update kunde set geld = geld + ( preis * menge )

Er verkauft nun 500 Einheiten zum Preis von 6, was den default Werten entspricht. Er müßte nun einen Kontostand von -2000 haben, jedoch komme ich auf 9223372036854775807.

Ist dies ein Fehler der MySQL Datenbank ?
 
Das liegt daran dass du ein "unsigned" integer in einem "signed" integer speicherst (preis * menge) -> geld.
Mach einen typecast oder aender preis von unsigned auf signed, dann funktioniert das auch so wie es soll.
 
Zurück
Oben