170 похожих чатов

Доброй ночи Вопрос, конечно, наполовину по Го, но подскажите, пожалуйста Функция на

создание создание роли в базе с нужными правами.
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

11 ответов

23 просмотра

role_id autoincrement?

ShiroNoHaga- Автор вопроса
Web
role_id autoincrement?

Сейчас проверю на всякий

ShiroNoHaga- Автор вопроса

А почему не хотите в разных коммитах сделать?

ShiroNoHaga- Автор вопроса
Web
А почему не хотите в разных коммитах сделать?

Можно и в разных, просто хотел узнать можно ли в одной

ShiroNoHaga
Можно и в разных, просто хотел узнать можно ли в о...

Выходит, что можно https://stackoverflow.com/questions/40675365/get-back-newly-inserted-row-in-postgres-with-sqlx/56787271#56787271

ShiroNoHaga- Автор вопроса
Web
Выходит, что можно https://stackoverflow.com/ques...

Супер, спасибо большое ) Пошёл читать

ShiroNoHaga
Супер, спасибо большое ) Пошёл читать

Поскольку у вас autoincrement, то похоже нельзя за один коммит сделать. Нужно у профи спросить🧚

ShiroNoHaga
Можно и в разных, просто хотел узнать можно ли в о...

Скорее всего, что в одной нельзя. У тебя же сама БД подставляет значение. А запросы идут после коммита

ShiroNoHaga- Автор вопроса
ShiroNoHaga- Автор вопроса
Stanislav DragonSov
Скорее всего, что в одной нельзя. У тебя же сама Б...

Просто пришёл из питона и там использовал sqlalchemy, а там есть session.flush(), который обновляет объекты в транзакции. Но сейчас смотрю что они используют подтранзацию и что-то ещё мутят, так что да, за один запрос точно не получатся

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта