困难问题,请帮忙,一定给分

GoldTiger 2003-09-29 12:04:46
我在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 ))



...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
upingking 2003-09-29
  • 打赏
  • 举报
回复
应该是更新时的主键问题,你看看WHERE (CarID in (select CarID from TABLE_CarDBSub WHERE DBMainID = @DBID ))
WHERE (CarID in (select CarID from TABLE_CarDBSub WHERE DBMainID = @DBID ))
能不能唯一确定一条记录
hmily1688 2003-09-29
  • 打赏
  • 举报
回复
如果如二楼所说,则如楼上。
angle097113 2003-09-29
  • 打赏
  • 举报
回复
如果你用的是table或者query的话 那么在他们的posterror事件当中把警告忽略
在该事件当中写上action=daabort;
lqdmafeng 2003-09-29
  • 打赏
  • 举报
回复
就是上面说的那样,更新不唯一,
76liujing 2003-09-29
  • 打赏
  • 举报
回复
是一个警告,
如果可以更新多行,可以不管他

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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