我是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");
在这种情况下,您有什么建议吗?