tft*_*ftd 2 php sql database postgresql
很久以前,我写了一个处理 postgresql 数据库连接的 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;
Run Code Online (Sandbox Code Playgroud)
我已经用关系构建了我的数据库,并且正在使用(如果可能的话):
ON DELETE CASCADE
ON UPDATE CASCADE
Run Code Online (Sandbox Code Playgroud)
但我希望 100% 确定数据库中的内容是干净的,并且如果/当更新/删除或插入失败时没有残留。
如果您能分享您对 pg_prepare 的意见/经验,那就太好了,我真的需要“准备交易”以及任何其他可能对我有帮助的附加内容吗?:)
不,你不需要两阶段提交!...
为了安全的 PHP 数据库处理,不要直接使用 pg_query,而是将其包装在一个特殊的函数中,该函数执行以下操作:
这样,如果您的脚本崩溃或发生其他情况,则会自动发出回滚。您只能通过显式提交来提交。
如果您使用持久连接,请注意:php 对 pg_pconnect 的处理有点......错误。
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |