Как использовать транзакцию с PQexecPrepared libpq - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в postgresql и хотел бы спросить, как сделать транзакцию, используя BEGIN, COMMIT и PQexecPrepared.В моей программе мне нужно обновить много таблиц перед COMMIT.Я понимаю, что нам нужно использовать:

1. PQexec(conn,"BEGIN");
2. execute some queries
3. PQexec(conn,"COMMIT");

Я впервые попробовал с помощью PQexecParams, он работал:

PQexec(conn,"BEGIN");
PQexecParams(conn,  "INSERT INTO Cars (Id,Name, Price) VALUES ($1,$2,$3)", 
                     3, NULL, parValues, NULL , NULL, 0 );
PQexec(conn,"COMMIT");

Однако, когда я пытался с помощью PQexecPrepared, моя таблица Carsне был обновлен после COMMIT (конечно, он работал в режиме автоматической фиксации без BEGIN & COMMIT)

PQexec(conn,"BEGIN");
PQprepare(conn,"teststmt",  "INSERT INTO Cars (Id,Name, Price) VALUES ($1,$2,$3)", 3, NULL );
PQexecPrepared(conn, "teststmt", 3, parValues,NULL, NULL,0);   
PQexec(conn,"COMMIT");

Есть ли у вас какие-либо рекомендации в этом случае?

...