create trigger updateItem on tbl
for update
as 
if(select price from tbl in inserted)>30 
begin
   RAISERROR (价格不能超过30', 16, 1)
   rollbacl trans
end

解决方案 »

  1.   

    RAISERROR
    返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。语法
    RAISERROR ( { msg_id | msg_str } { , severity , state }
        [ , argument [ ,...n ] ] )
        [ WITH option [ ,...n ] ]参数
    msg_id存储于 sysmessages 表中的用户定义的错误信息。用户定义错误信息的错误号应大于 50,000。由特殊消息产生的错误是第 50,000 号。msg_str是一条特殊消息,其格式与 C 语言中使用的 PRINTF 格式样式相似。此错误信息最多可包含 400 个字符。如果该信息包含的字符超过 400 个,则只能显示前 397 个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息 ID 是 14,000。msg_str 支持下面的格式:% [[flag] [width] [precision] [{h | l}]] type
      

  2.   

    RAISERROR (价格不能超过30', 16, 1) WITH LOG --记录到WINDOWS日志
      

  3.   

    我的意思是说,如果在VB中连到SQL了,然后在文本框中添加price字段的值,按确定按钮,如果数字大于30,则显示SQL中的错误信息。
    怎样在VB捕获?请各位帮忙。
      

  4.   

    我的意思是说:
    如何在VB中用代码来显示SQL中的错误信息。
      

  5.   

    我觉得你应该去VB社区问问的,在这里我先帮你想个办法
    在你的程序中这个SQL应该是写在一个Function里的,那就在这个Function里加一个Goto Error 
    如果在你SQL出错后,直接报错,VB里的ErrorMessege,你应该知道怎么写的吧?
      

  6.   

    参考这个,这个适合你:
    http://community.csdn.net/Expert/topic/2986/2986543.xml?temp=.1339685