OCIドライバーでPDOを使用しています。私の特定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を報告することです。しかし、これは、エラーが発生したかどうかを判断するための独自のまたは信頼できる方法ではありません。