3asymous3
Goto Top

MySQL Probleme beim Tabelle erstellen

Hallo,

bin ein aboluter Anfänger in SQL, arbeite gerade mit einem Lehrbuch und komm nicht weiter bei einem Befehl

Ich arbeite mit MySQL ( Version 5.1..24 ) und stoße auf folgendes Problem beim Erstellen der Tabelle.
CREATE TABLE t_lager
 (id INTEGER NOT NULL,
 stueck INTEGER DEFAULT 1,
 preis FLOAT NOT NULL,
 wert **COMPUTED BY**(stueck * preis));
Den Befehl COMPUTED BY will er einfach nicht akzeptieren und es kommt dann folgende Fehlermeldung:

You have an Error in your SQL syntax, check manual corresponds to your MySQLServer Version for the right syntax to use neartted by (stueck * preis)), at line 5

Es wäre prima wenn mir jemand das verständlich erklären könnte ( bin absoluter Anfänger in diesem Bereich ), damit ich weiter im Lehrbuch arbeiten kann.

Content-Key: 147596

Url: https://administrator.de/contentid/147596

Printed on: April 26, 2024 at 09:04 o'clock

Member: Nottrott
Nottrott Jul 24, 2010 at 22:38:06 (UTC)
Goto Top
Hi,

soweit ich weiß, gibt es in MySQL kein COMPUTED. Ist das Buch allgemein über SQL oder für ein bestimmtes Datenbanksystem?
Aber du könntest den Wert z.B. erst im SELECT berechnen, wenn du ihn brauchst. z.B.: SELECT (stueck * preis) AS wert FROM t_lager;
Oder vor dem INSERT berechnen und dann nur den berechneten Wert reinschreiben.
Ersteres hat halt den Nachteil, dass es jedesmal neu berechnet wird und zweiteres, dass du beim Ändern dran denken musst, den Wert auch mit zu ändern.

Gruß
nottrott
Member: 3asymous3
3asymous3 Jul 25, 2010 at 14:35:57 (UTC)
Goto Top
Das Buch ist aus dem HERDT Verlag und behandelt SQL Grundlagen und Datenbankdesign.
Member: dog
dog Jul 25, 2010 at 17:28:09 (UTC)
Goto Top
SQL ist zwar ein Standard, aber es gibt keine Implementation, die sich an den Standard hält.
Sobald du über SELECT a FROM b hinaus kommst wird des produktspezifisch.

Und wie Nottrott schon sagte: MySQL kann kein COMPUTED BY.
So ein Feld holt man sich entweder beim SELECT oder berechnet es über Trigger.