我在Sql7.0中用到了触发器,在触发器中使用了Update语句,为什么在程序执行插入和修改时总是报错‘键列信息不足或不正确。更新影响到过多的行’,但是我到数据库中查看时,数据已经按我的要求更新了,就是一直报错。请问此问题该如何解决  
         触发器如下:  
 
CREATE  TRIGGER  [DBSH]  ON  dbo.TABLE_CarDBMain    
FOR  UPDATE  
AS  
declare  @DBID  as  int,  
               @BZ  as  smallint,  
               @DRCK  as  varchar(50),  
               @DCCK  as  varchar(50)  
select    @DBID=DBID,@BZ=BZ,@DRCK=DRCK,@DCCK=DCCK  from  inserted  
if  @BZ=1  
UPDATE  TABLE_CarSubDa  
SET  CarCKName  =  @DRCK  
WHERE  (CarID  in  (select  CarID  from  TABLE_CarDBSub  WHERE  DBMainID  =  @DBID  ))  
 
if  @BZ=0  
UPDATE  TABLE_CarSubDa  
SET  CarCKName  =  @DCCK  
WHERE  (CarID  in  (select  CarID  from  TABLE_CarDBSub  WHERE  DBMainID  =  @DBID  ))  
 
 
 

解决方案 »

  1.   

    应该是更新时的主键问题,你看看WHERE  (CarID  in  (select  CarID  from  TABLE_CarDBSub  WHERE  DBMainID  =  @DBID  ))  
    WHERE  (CarID  in  (select  CarID  from  TABLE_CarDBSub  WHERE  DBMainID  =  @DBID  ))  
    能不能唯一确定一条记录
      

  2.   

    如果你用的是table或者query的话 那么在他们的posterror事件当中把警告忽略
    在该事件当中写上action=daabort;