Ich googelte und fand diesen Thread Slick 3.0: Delete rows from multiple tables in a transaction Allerdings sagt die Lösung, dass es keine gute Lösung ist.Löschen von Zeilen aus mehreren Tabellen in einer glatten Abfrage
Ich Löschen von Zeilen aus mehreren Tabellen mit meinem Code unten
val deleteB = for {
aId <- TableA.filter(a => a.id === param).map(_.id)
bId <- TableB.filter(_.aId === aId)
} yield bId
val deleteC = for {
aId <- TableA.filter(a => a.id === param).map(_.id)
cId <- TableC.filter(_.aId === aId)
} yield cId
val deleteA = TableA.filter(a.Id === param)
val query = (deleteC.delete andThen deleteB.delete andThen deleteA.delete).transactionally
db.run(query)
Aber ich frage mich, ob es eine bessere Art und Weise des Schreibens dieser ist.
Mein Problem mit dem obigen Ansatz ist, dass ich die Anzahl der Zeilen aus TabelleA und nicht die Summe der Zeilen aus den untergeordneten Tabellen TableB und TableC gelöscht werden soll.
Auch zur Laufzeit klagt es über die Verknüpfung der Löschabfrage.
ich mit Ansatz irgendwelche Probleme nicht sehen. Es sollte gut funktionieren. Stehen Sie vor spezifischen Problemen beim Löschen der Datensätze? –
die Frage aktualisiert –