我做了简单的更新触发器,用SQL试验没发现问题, 
用户在表1中修改某字段时,触发器会自动更新表二中相关的字段, 
我用adodataset与DBGrid试验是否自动更新, 
在表1的DBGRID中一旦修改后Pose(),马上就弹出中文出错 
提示,是'中文'的,说明是WINDOWS回送出的,与DELPHI/BCB关系不大, 
"键列信息不足而不正确,更新影响到多行", 
1>触发器虽在表1,但动作影响的是表二,为何要这个多余的出错提示? 
2>删除触发器就正常了. 
为何这般不配合? 

解决方案 »

  1.   

    这个是ADO控件等相关组件提示的。需要在触发器当中set nocount关闭统计值,使得rows_affected的值不因为触发器内部的操作而更新。
      

  2.   

    更新的时候字段个数对不齐造成的,是不是table里面有字段定义
      

  3.   

    set nocount已关, 
    它是原有的一行,没删
      

  4.   

    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;    -- Insert statements for trigger hereEND
    GO
    //---------------------
    SET NOCOUNT ON的一行没删,不是这个问题吧.
      

  5.   

    另外一个可能是你使用的Master/Detail模式,程序会主动帮你修改关联数据,此时发现关联数据已经被更新,从而抛出异常。
      

  6.   

    因为今天真的懂了触发器,重新输进去,错误莫名其妙没有了,
    肯定不是主键/NOCOUNT参数的问题;