Überwindung des MySQL-Fehlers 1093: „Zieltabelle für Aktualisierung kann in der FROM-Klausel nicht angegeben werden“
Wenn MySQL-Fehler 1093 auftritt, ist dies wichtig um das zugrunde liegende Problem zu verstehen. Dieser Fehler tritt auf, wenn versucht wird, eine Tabelle zu ändern, auf die auch in der FROM-Klausel einer Abfrage verwiesen wird.
Ursache
MySQL lässt nicht zu, dass Tabellen gleichzeitig geändert werden und in der FROM-Klausel einer UPDATE- oder DELETE-Anweisung verwendet. Diese Einschränkung ist auf die Mehrdeutigkeit zurückzuführen, die durch den Zugriff auf dieselbe Tabelle für beide Vorgänge entstehen würde.
Lösung 1: Verwenden einer Unterabfrage
Eine Problemumgehung besteht darin, SELECT einzubetten Anweisung, die die beschädigten Einträge als Unterabfrage in der FROM-Klausel von UPDATE oder DELETE identifiziert Aussage:
UPDATE story_category SET category_id = NULL WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
Lösung 2: Selbstverknüpfung der Tabelle
Alternativ können Sie die Tabelle selbst verknüpfen, um separate Aliase für dieselbe Tabelle zu erstellen Sie können einen der Aliase ändern und gleichzeitig auf den anderen verweisen. Zum Beispiel:
UPDATE story_category AS updated INNER JOIN story_category AS original ON updated.category_id = original.category_id SET updated.category_id = NULL WHERE original.category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
Vermeiden eines erneuten Auftretens
Sobald die beschädigten Einträge gelöscht wurden, sollten Sie erwägen, Einschränkungen für die Tabelle „story_category“ zu implementieren, um zukünftige ungültige Einträge zu verhindern:
ALTER TABLE story_category ADD FOREIGN KEY (category_id) REFERENCES category(id);
Das obige ist der detaillierte Inhalt vonWie behebt man den MySQL-Fehler 1093: „Zieltabelle für Aktualisierung kann in FROM-Klausel nicht angegeben werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!