触发器中能不能用raiseerror抛出自定义错误?

halenwyh 2007-03-12 02:13:47
我在一个insert触发器中,使用raisererror抛出错误,但在pb程序中却抓不到我自己抛出的错误,只报出类似插入失败这样的错误,请问各位是不是在触发器中不能使用raseerror抛错的啊?
...全文
474 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
halenwyh 2007-03-14
  • 打赏
  • 举报
回复
我直接抛字符串内容可以,但如果先用sq_addmessage加入到系统错误表中,再抛就不行,怎么回事呢?
---涛声依旧--- 2007-03-12
  • 打赏
  • 举报
回复
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
RAISERROR 生成的错误与数据库引擎 代码生成的错误的运行方式相同。RAISERROR 指定的值由 ERROR_LINE、ERROR_MESSAGE、ERROR_NUMBER、ERROR_PROCEDURE、ERROR_SEVERITY、ERROR_STATE 以及 @@ERROR 等系统函数来报告。当 RAISERROR 在严重级别为 11 或更高的情况下在 TRY 块中运行,它便会将控制传输至关联的 CATCH 块。如果 RAISERROR 在下列情况下运行,便会将错误返回到调用方:

在任何 TRY 块的作用域之外运行。


在严重级别为 10 或更低的情况下在 TRY 块中运行。


在严重级别为 20 或更高的情况下终止数据库连接。


CATCH 块可以使用 RAISERROR 来再次引发调用 CATCH 块的错误,方法是使用 ERROR_NUMBER 和 ERROR_MESSAGE 之类的系统函数检索原始错误消息。对于严重级别为 1 到 10 的消息,@@ERROR 默认值为 0。有关详细信息,请参阅在 Transact-SQL 中使用 TRY...CATCH。
---涛声依旧--- 2007-03-12
  • 打赏
  • 举报
回复
可以啊
RAISERROR ('錯誤信息',11,1) --注意id號一定要大於10

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧