很久以前,我写了一个处理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的意见/经验,那会很好,我是否真的需要“准备交易”以及任何其他可能对我有帮助的事情?:)
不,您不需要准备事务(这是针对跨不同服务器的分布式事务的,正如Milen所指出的那样)。
我不确定PHP接口如何处理该问题,但是只要您可以确保未在自动提交模式下运行,就可以了。
如果您无法控制自动提交模式,只需将您的语句放入BEGIN … COMMIT块中