Size: a a a

2020 March 17

AA

Andrey Andreev in pro.elixir
Тогда поидее в одной транзакции должно быть, а то малоли что там произойдёт между двумя запросами
источник

IB

Ilya Borovitinov in pro.elixir
Źmićer Rubinštejn
В постгре хотябы количество удаленных строк
Ecto так тоже умеет, через delete_all/2, если база данных поддерживает
источник

x

xhajag in pro.elixir
любое неатомарное действие с бд надо бы в транзакцию оборачивать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вроде как селекты транзакцией не гарантируют ничего
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но в этом я не очень шарю честно говоря
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ilya Borovitinov
Ecto так тоже умеет, через delete_all/2, если база данных поддерживает
Да, но это считай надо код по другому писать
источник

x

xhajag in pro.elixir
ну есть такая штука как уровни изоляции транзакций - можно прочесть то, что уже было изменено, но еще не закомичено
источник

ŹR

Źmićer Rubinštejn in pro.elixir
xhajag
ну есть такая штука как уровни изоляции транзакций - можно прочесть то, что уже было изменено, но еще не закомичено
Да, в эту сторону работает
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но в другую как раз нет. Т.е. если ты прочитал селектом а потом час думаешь, то другой сможет удалить в это время
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И ты в транзакции как бы тоже попробуешь удалить, но без эффекта. Получается транзакция не имеет смысла
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Вот если ты обновил к примеру сперва, то запись по идее заблочится от параллельных действий до конца коммита
источник

x

xhajag in pro.elixir
да, соглашусь с Вами
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но может там что-то можно где-то настроить
источник

x

xhajag in pro.elixir
select for update - но лучше бы не надо так делать
источник

AN

Aleksandr N in pro.elixir
Есть же транзакции с локом на чтение
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Короче лучше один раз из миллиона на race condition вернуть вместо 404 500
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Чем запариваться по этому поводу
источник

AG

Alexey Golda in pro.elixir
Если гарантия нужна то используй serializable в постгресе, городить ничего не надо в этих случаях.
источник

AG

Alexey Golda in pro.elixir
На всякий ссылка на оффдоку
https://www.postgresql.org/docs/9.5/transaction-iso.html
источник

VS

Vladimir Sekisov in pro.elixir
с полной сериализацией
надо быть готовым к перезапуску транзакции,
так что городить все равно
придется
источник