所以我正在做一些业务逻辑,并想运行一些类似的代码
select id from blah where foo = 1234 for update nolock
blah
当相应的行被锁定时,此代码将引发 DataMapper::SQLError 。这是理想的行为;我想捕捉这个错误并用它来通知我的应用程序逻辑。但是我想重新抛出任何其他 SQL 错误,因为它们与我正在编程的情况不同,并且以相同的方式捕获它们是错误的。
返回的错误对象有一个字符串错误消息和一个数字代码 ( 50463045
)。似乎在数字代码上进行比较会很棒,但我不想50463045
在不了解它是如何确定的情况下将常量嵌入我的代码中。值得注意的是,Postgres 手册建议此状态的错误代码是55P03
,这似乎不是一回事。我不知道我可以信任多少这个幻数,以及除了实验之外如何确定它,所以我不太习惯使用它。
错误代码是如何确定的?