如何在PQexecPrepared libpq中使用事务

时间:2018-11-14 22:05:22

标签: postgresql libpq autocommit

我是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时,COMMIT之后并没有更新我的Cars表(当然,它在没有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");

在这种情况下,您有什么建议吗?

0 个答案:

没有答案