我已经创建了&使用libpq(PostgreSQL)使用预准备语句。我想知道是否有办法删除准备好的语句而不断开数据库?或者实现这一目标的最佳方法是重新连接&重新准备?
我正在使用PostgreSQL版本8.4的libpq。我搜索了9.2文档,但找不到与此相关的任何内容......
答案 0 :(得分:7)
根据documentation,DEALLOCATE
是删除预备声明的唯一方法,强调补充:
也可以通过创建用于PQexecPrepared的预备语句 执行SQL PREPARE语句。此外,虽然没有libpq 用于删除预准备语句的函数,SQL DEALLOCATE 声明可用于此目的。
据推测,他们并不打算为此公开C函数,因为这很简单:
char query[NAMEDATALEN+12];
snprintf(query, sizeof(query), "DEALLOCATE %s", stmtName);
return PQexec(conn, query);