Unverständliches Update Problem

sqlnoobi

Neuer Benutzer
Beiträge
4
Hallo liebe Forengemeinde

Ich habe ein mir scheinbar unlösbares Problem und zwar geht es um folgende (eigentlich) simple Update -Anweisung.

Code:
UPDATE `test1`.`lagern` SET `Menge` = '3' WHERE `lagern`.`Lagerplaetze_idLagerplaetze` = 2 AND `lagern`.`Materialien_idMaterialien` = 3

Hiermit möchte ich das Atribut Menge auf den Wert 3 setzen.
Anzumerken ist wohl noch das "Lagerplaetze_idLagerplaetze" und "Materialien_idMaterialien" Primary Keys sind. Menge ist ein ganz normales Atribut.

Jetzt zum eigentlichen Fehler:
1093 - You can't specify target table 'materialien' for update in FROM clause

Leider sagt mir das recht wenig und googlen hat auch nicht wirklich geholfen.

Wäre klasse wenn mir jemand erklären könnte wie man es richtig macht ;)


MfG
 
Werbung:
Hallo liebe Forengemeinde

Ich habe ein mir scheinbar unlösbares Problem und zwar geht es um folgende (eigentlich) simple Update -Anweisung.

Code:
UPDATE `test1`.`lagern` SET `Menge` = '3' WHERE `lagern`.`Lagerplaetze_idLagerplaetze` = 2 AND `lagern`.`Materialien_idMaterialien` = 3

Hiermit möchte ich das Atribut Menge auf den Wert 3 setzen.
Anzumerken ist wohl noch das "Lagerplaetze_idLagerplaetze" und "Materialien_idMaterialien" Primary Keys sind.

Eine Tabelle kann nur einen PK haben. Welcher ist es, oder ist er zusammengesetzt?

Jetzt zum eigentlichen Fehler:
1093 - You can't specify target table 'materialien' for update in FROM clause

Leider sagt mir das recht wenig und googlen hat auch nicht wirklich geholfen.

Deine Fehlermeldung paßt nicht zum gezeigten Befehl. Laß mal testweise die Table-Namen im Where-Teil weg.

Wäre klasse wenn mir jemand erklären könnte wie man es richtig macht ;)


MfG

MySQL nicht zu verwenden ;-)


Andreas
 
Das ging ja schnell, super ^^

Also erstmal ja es ist ein zusammengesetzer Schlüssel.

Der Fehler bleibt jedoch der selbe sogar wenn ich nur diese Anweisung ausprobiere:
Code:
UPDATE `lagern` SET `Menge` = '3'
 
Das ging ja schnell, super ^^

Also erstmal ja es ist ein zusammengesetzer Schlüssel.

Der Fehler bleibt jedoch der selbe sogar wenn ich nur diese Anweisung ausprobiere:
Code:
UPDATE `lagern` SET `Menge` = '3'

Mir ist hier nicht ersichtlich, wie es zu "1093 - You can't specify target table 'materialien' for update in FROM clause" kommen soll.

Auch wenn ich MySQL für krass kapott halte - hier denke ich, machst Du etwas völlig anderes als Du uns sagst.

Andreas
 
Hm ich habe hal den relevanten ausschnitt meines Modells an Bild angehängt, vielleicht wird es ja dann klarer.
show.php


Fall das Bild nicht geht hier noch der direkte Link:
http://www.bilder-upload.eu/show.php?file=62210b-1389611645.jpg

Edit: Und hier möchte ich nur in der Tabelle "lagern" die Menge bei einem schon exsistierenden Datensatz verändern.

MfG
 
Hm ich habe hal den relevanten ausschnitt meines Modells an Bild angehängt, vielleicht wird es ja dann klarer.
show.php


Fall das Bild nicht geht hier noch der direkte Link:
http://www.bilder-upload.eu/show.php?file=62210b-1389611645.jpg

Edit: Und hier möchte ich nur in der Tabelle "lagern" die Menge bei einem schon exsistierenden Datensatz verändern.

MfG


Bunte Bilder sind zwar nett, helfen aber oft nicht wirklich. Nachvollziehen kann ich Dein Problem damit zumindest nicht. Hier funktioniert:

Code:
test=# create table lagerplaetze (id int primary key);  
CREATE TABLE
test=*# create table materialien (id int primary key);  
CREATE TABLE
test=*# create table lagern (id_platz int references lagerplaetze, id_material int references materialien, menge int, primary key(id_platz, id_material));
CREATE TABLE
test=*# insert into lagerplaetze values (3);
INSERT 0 1
test=*# insert into materialien values (5);
INSERT 0 1
test=*# insert into lagern values (3,5,10);
INSERT 0 1
test=*# update lagern set menge = 30 where id_platz = 3 and id_material = 5;
UPDATE 1
test=*# select * from lagern;
id_platz | id_material | menge
----------+-------------+-------
  3 |  5 |  30
(1 row)
 
Werbung:
Hast du eventuell einen Trigger auf der Tabelle gehabt? Dann kann der einen Fehler erzeugt haben und SQL würde dir diesen zurück liefern.
 
Zurück
Oben