Многократное обновление DAO в одном запросе через Exposed?

#kotlin-exposed

#kotlin-exposed

Вопрос:

обычно я могу создать SQL-запрос, подобный этому, для обновления двух отдельных таблиц:

 UPDATE Books, Orders
SET Orders.Quantity = Orders.Quantity   2,
    Books.InStock = Books.InStock - 2
WHERE
    Books.id = Orders.BookID
    AND Orders.id = 1002;
  

DAO было бы похоже:

 internal object Books : LongIdTable() {
    val InStock: Column<Long> = long("in_stock")
}
internal object Books : LongIdTable() {
    val Quantity: Column<Long> = long("quantity")
    val BookID: Column<Long> = long("book_id").references(Books.id)
}
  

Каков рекомендуемый способ выполнения аналогичного SQL-запроса с использованием Exposed?
2) Отдельный вопрос, можем ли мы написать два запроса на обновление в одном блоке транзакции? Что-то вроде этого:

         transaction {
            TableA.update({ TableA.id eq id }) { row ->
                row[TableA.status] = appStatus
            }
            TableB.update({ TableB.appID eq id }) { row ->
                row[TableB.status] = userStatus
            }
        }
  

Спасибо за любые указания.

Комментарии:

1. вы получили ответ или какой-либо намек, дайте мне знать

2. Я думаю, вы делаете это правильно. Всего два обновления в одной транзакции.

Ответ №1:

Да, вы можете написать более одного оператора на блок транзакции, и я думаю, что это разумный способ реализовать ваше обновление