2017-10-08 2 views
0

Ich möchte folgendes tunMySQL Update mit Unterabfrage löschen

Delete all the records from a table called survey and then set the status of deleted reference numbers to zero(0) which is in other table.

Die Abfrage, die ich verwende ist unter

Update ref_numbers rn SET rn.status = 0 where ref_no IN (DELETE FROM survey WHERE id < 302) 

Aber diese Abfrage nicht funktioniert, ich habe auch müde, um die Lösch-Abfrage wie DELETE ref_no FROM survey...... zu ändern, aber es ist immer noch nicht funktioniert. Ich denke, ich vermisse etwas, das ich nicht kenne.

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Sie können nicht in derselben Operation löschen und aktualisieren. Sie können dieses Problem besser lösen, indem Sie entweder (1) einen Trigger verwenden - den Verweiszähler mit einem AFTER-Trigger für die untergeordnete Tabelle beibehalten oder (2) eine Ansicht - die Referenzzählung als korrelierte Unterabfrage in einer Ansicht des übergeordneten Objekts erstellen Tabelle.

+0

Ok, der Trigger wäre nach dem Löschen? – faisal1208

+0

Nach welchen Ereignissen auch immer Sie die Referenzzählung ändern, die Sie aufzeichnen möchten. Das würde wahrscheinlich NACH LÖSCHEN und NACH EINFÜGEN bedeuten. Wenn es auch möglich ist, das übergeordnete Element eines vorhandenen untergeordneten Datensatzes zu ändern (ungewöhnlich), möchten Sie auch NACH dem UPDATE. –