我将 PDO 与 OCI 驱动程序一起使用。我的一个特定INSERT
查询导致触发错误:
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "FOO.BAR", line 5
ORA-04088: error during execution of trigger 'FOO.BAR'
但是,发生这种情况时不会引发异常。我正在使用ERRMODE_EXCEPTION
,并且对于标准查询语法错误等会引发异常,但对于源自触发器的任何错误则不会。
在这种情况下,调用$st->execute()
也不返回FALSE
。此外,$st->errorInfo()
并且$st->errorCode()
两者都无济于事:
array(3) {
[0]=>
string(5) "00000"
[1]=>
NULL
[2]=>
NULL
}
string(5) "00000"
发生触发错误时,如何让 PDO 引发异常?或者,如果这是不可能的,我如何以编程方式检测何时通过其他方式发生这种情况?我什至知道首先发生错误(除了数据库未更新)$st->rowCount()
的唯一方法是报告 0。但这本身并不是确定是否发生错误的唯一或可靠方法......