У меня возникли проблемы с поиском некоторых примеров, которые делают три из следующих вещей:
1) Разрешить необработанные транзакции sql в golang.
2) Используйте подготовленные операторы.
3) Откат при ошибках запроса.
Я хотел бы сделать что-то подобное, но с подготовленными утверждениями.
stmt, stmt_err := db.Prepare(`
BEGIN TRANSACTION;
-- Insert record into first table.
INSERT INTO table_1 (
thing_1,
whatever)
VALUES($1,$2);
-- Inert record into second table.
INSERT INTO table_2 (
thing_2,
whatever)
VALUES($3,$4);
END TRANSACTION;
`)
if stmt_err != nil {
return stmt_err
}
res, res_err := stmt.Exec(
thing_1,
whatever,
thing_2,
whatever)
Когда я запускаю это, я получаю эту ошибку: pq: cannot insert multiple commands into a prepared statement
Что дает? Возможны ли транзакции, совместимые с ACID, в golang? Я не могу найти пример.
ИЗМЕНИТЬ без примеров здесь.