создание создание роли в базе с нужными правами.
0. Открытие транзации (dbTx, err := repo.db.Begin())
1. Создаётся роль, возвращаются RETURNING (role_id, name, is_admin);
2. Создаётся пермишены, используя: INSERT INTO role_permission(role_id, scope, access)
3. Коммит (dbTx.Commit())
Проблема:
role_id = 0 во время создания пермишенов (шаг 2), т.к. коммит идёт только только в конце функции, и роль по факта не создана. Вопрос, как можно "создать" роль внутри транзации без коммита?
Пакедж github.com/jmoiron/sqlx
role_id autoincrement?
Сейчас проверю на всякий
Да, serial4
А почему не хотите в разных коммитах сделать?
Можно и в разных, просто хотел узнать можно ли в одной
Выходит, что можно https://stackoverflow.com/questions/40675365/get-back-newly-inserted-row-in-postgres-with-sqlx/56787271#56787271
Супер, спасибо большое ) Пошёл читать
Поскольку у вас autoincrement, то похоже нельзя за один коммит сделать. Нужно у профи спросить🧚
Скорее всего, что в одной нельзя. У тебя же сама БД подставляет значение. А запросы идут после коммита
Да, думаю вы правы, спасибо )
Просто пришёл из питона и там использовал sqlalchemy, а там есть session.flush(), который обновляет объекты в транзакции. Но сейчас смотрю что они используют подтранзацию и что-то ещё мутят, так что да, за один запрос точно не получатся
Обсуждают сегодня