zoukankan      html  css  js  c++  java
  • SQL Msg 18054, Level 16, State 1

        今天接到一个看起来很简单的任务--修改数据库中的一项数据。听起来很简单吧。

        在网上搜索了一下,很快就拼凑出了相应的 SQL 语句:

    UPDATE [suivi].[dbo].[numSerie]
    SET    ni_numCible = 'HF17263N7P13340'     
    WHERE ni_num = 'HF17262A1400234'

        通过以上语句也可以看出来,任务很简单,在 [suivi].[dbo].[numSerie] 表中,查找 ni_num = 'HF17262A1400234' 的记录,将该条记录的 ni_numCible 字段设置为 'HF17263N7P13340'。

        出乎意料,在执行了以上语句之后,出现了以下提示:

    Msg 18054, Level 16, State 1, Procedure tg_InsUpdCible, Line 31
    Error 50010, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage.
    Msg 3609, Level 16, State 1, Line 1
    The transaction ended in the trigger. The batch has been aborted.

        执行完后不是应该出现 “xx Rows afftectd” 的吗,作为 SQL 小白的我,对于这一大堆提示信息,表示看不懂。

        好吧,上 Google 上搜索一下吧,OK,就第一条结果看看。

        看起来跟我得到的错误信息差不多,来仔细瞧一瞧。发现以下一段代码:

        /*Check for valid parameter*/
        If LEN(@txtBidderID) =0  or  ISNULL(@txtBidderID,'') =''
        RAISERROR(50002,10, 1,'Error Accessing Bidder Record - Must Provide Bidder ID')
    ELSE

        作者得到的 Error 50002 应该就是这里输出的啦,那我接下来的工作,就该是找到我这里输出 Error 50010 的那个文件在哪了,找到之后,为啥要给我甩出 Error 50010 就清楚了,如何避免也就迎刃而解了!

        可是作者贴出来的是个啥文件,不知道,依次搜索了该文件中的几个关键字后,我 get 到了 trigger 这个概念,大意是说,在执行 insert update delete 操作之前或是之后,会自动触发一些操作。可这个 trigger 在哪,来找找吧。

        2017-10-25_17-55-12

        查看上图中高亮文件的内容,果然,里面写明了,在什么样的条件下,就会甩出 Error 50002 .

        右键该文件,哎,有个 Disable 菜单,看起来是禁用这个 trigger 的意思。

        禁用该 trigger 以后,再执行本文最初的 SQL 语句,成功啦!最后再将该 trigger 使能。OK,任务完成!

        今天遇到的这个小问题,对于稍懂 SQL 的人来说,应该是非常容易解决的。可是对于我这样对 SQL 知之甚少的人来说,也算得上如临大敌了。现在把解决问题的过程记录下来,一来是给遇到同样问题的其他人提供解决方法,更重要的是提醒自己,遇到问题,重点是要解决问题,不要一遇到某个的问题,就找一堆相关的教程来从头啃,这肯定是不行的,毫无疑问,如此不到半小时就会放弃。始终要把解决当前的问题作为根本目的,一步步来,问题自然就会解决的。

  • 相关阅读:
    java错误分析之junit测试错误(实验一)
    oracle逐步学习总结之oracle分页查询(基础三)
    OracleServer总结进阶之系统分析(进阶完结)
    QMS 的趨勢概述
    Python 類別 class 的繼承 Inheritance
    Python 面向導向語言 Object Oriented Programming Language
    Python 參考資源
    Dynamics 365-CRM又报看不懂的错误了
    Dynamics 365-为什么查到的Record的Id是Guid初始值
    Dynamics 365-如何下载新版本的Tools
  • 原文地址:https://www.cnblogs.com/outs/p/7730733.html
Copyright © 2011-2022 走看看