我有一个非常广泛的基于 PHP/Yii 的 PHP 更新脚本,它可以更新不同数据库类型(MSSQL、Postgres 和 MySQL)上的数据库。
整个脚本在事务中运行。但是,有些语句会导致查询错误(例如,如果某个键已存在于表上)。我用语句包围了这些try/catch
——到目前为止,这在 MySQL 中运行良好
但是,在 Postgres 上,一旦发出无效查询,事务就会自动失败。以下所有语句均显示以下错误消息:
CDbCommand failed to execute the SQL statement: SQLSTATE[25P02]: In failed sql transaction: ERROR: current transaction is aborted, commands ignored until end of transaction block
但是我需要 Postgres 来继续事务,因为我想在应用程序中决定何时回滚 - 或者以某种方式清除错误并继续事务。
怎么做?