这是一个主观正确答案的技术问题,而不是要求意见的问题!请不要删除它是因为"不是建设性的"在你读它之前。 THX!的
嗨!
当我在触发器和我编写的其他函数中检测到某些错误时,我想提出SIGNAL,然后我想在外部函数中处理它们。有多种类型的错误,必须以不同方式处理。首先,我想我可以通过检查HANDLER中的MESSAGE_TEXT来区分SIGNALs,它可以捕获所有的45000,但后来我意识到在HANDLER中访问MESSAGE_TEXT是不可能的(至少不在10.1.21-MariaDB下我必须使用的东西)。所以现在我想为每种错误类型引发具有不同SQLSTATE值的SIGNAL,以便能够将它们分开。
我应该如何选择与个别错误相对应的SQLSTATE值?
我知道前两个字符指定了类; ' 00' =>成功,' 01' =>警告,' 02' =>未找到,> ' 02' = GT;异常。我也明白,' 45000'表示未处理的用户定义的异常因此它是通用用户引发的SIGNAL的值。但是,我是免费的两个选择任何值到我的信号的最后三个字符,如果它的值大于' 02'
我的意思是,显然不是,因为' 42000'例如,可以表示ER_SP_WRONG_NAME(不正确的例程名称),这是服务器引发的错误。
那么正确的策略是什么? 如何为用户引发SIGNAL选择合适的SQLSTATE,这不会与任何已经意味着什么的SQLSTATE发生冲突?