admin

PHP和PostgreSQL事务?

sql

很久以前,我写了一个处理postgresql db连接的php类。
我已将事务添加到插入/更新功能中,对我来说很好用。但是最近我发现了有关“ pg_prepare”函数的信息。
我对该函数的功能以及是否最好切换到该函数感到困惑。

当前,每当我执行插入/更新时,我的sql如下所示:

$transactionSql = "PREPARE TRANSACTION ".md5(time()).";"
                  .$theUpdateOrDeleteSQL.";".
                  ."COMMIT;";

This will return something like:
PREPARE TRANSACTION '4601a2e4b4aa2632167d3cc62b516e6d';
INSERT INTO users (username,g_id,email,password)
            VALUES('test',  '1', 'test','1234');
COMMIT;

我已经使用关系构建了数据库,并且正在使用(如果可能):

 ON DELETE CASCADE
 ON UPDATE CASCADE

但是我想100%确保数据库中的内容是干净的,如果/在更新/删除或插入失败时没有遗留物。

如果您可以分享您对pg_prepare的意见/经验,那会很好,我是否真的需要“准备交易”以及任何其他可能对我有帮助的事情?:)


阅读 187

收藏
2021-06-07

共1个答案

admin

不,您不需要准备事务(这是针对跨不同服务器的分布式事务的,正如Milen所指出的那样)。

我不确定PHP接口如何处理该问题,但是只要您可以确保未在自动提交模式下运行,就可以了。

如果您无法控制自动提交模式,只需将您的语句放入BEGIN … COMMIT块中

2021-06-07