首页 新闻 会员 周边

SQL关于限制表不能插入相同记录的触发器问题

0
[已解决问题] 解决于 2016-09-07 11:09

代码如下:

declare cursorInsert insensitive cursor for
select ID,货号,类型,出库单编号 from inserted

for read only

open cursorInsert

Fetch Next From cursorInsert into @ID,@ItemNo,@lx,@ckNo
while(@@Fetch_Status<>-1)
begin
    
        
        IF NOT EXISTS (SELECT * FROM Table_仓库_放量产品出库单_明细 WHERE 类型=@lx AND 货号=@ItemNo AND 出库单编号=@ckNo)
        BEGIN
        Update Table_仓库_放量产品出库单_明细 set 品名=
        (select top 1 品名 From Table_产品档案 where 货号=@ItemNo),
        计量单位=(select top 1 计量单位 From Table_产品档案 where 货号=@ItemNo)
        where ID=@ID
        END
        ELSE
            PRINT '同一个单号下存在相同明细!'
            ROLLBACK TRANSACTION

    Fetch Next From cursorInsert into @ID,@ItemNo,@lx,@ckNo
end

Close cursorInsert
Deallocate cursorInsert

请问上面代码为何不能起到控制"插入重复记录"的效果?

JaneEyreWork的主页 JaneEyreWork | 初学一级 | 园豆:11
提问于:2016-09-07 10:33
< >
分享
最佳答案
0

 IF NOT EXISTS (SELECT * FROM Table_仓库_放量产品出库单_明细 WHERE 类型=@lx AND 货号=@ItemNo AND 出库单编号=@ckNo)

 

这个判断有问题,和 下面的updage 语句的过滤条件,是等价的吗?

 

奖励园豆:5
悦光阴 | 老鸟四级 |园豆:2251 | 2016-09-07 11:06

我已经找到问题了 是事务那边出了问题 兄弟还是多谢了 

JaneEyreWork | 园豆:11 (初学一级) | 2016-09-07 11:08
其他回答(1)
0

什么意思?因为没用事务?

顾晓北 | 园豆:10844 (专家六级) | 2016-09-07 10:45

我的本意是想通过这段触发器控制表Table_仓库_放量产品出库单_明细里面不能插入重复记录(货号,类型,出库单编号),但是没用啊 请问这段代码哪里有问题

支持(0) 反对(0) JaneEyreWork | 园豆:11 (初学一级) | 2016-09-07 10:58

@OSManager: 太长懒得看

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-09-07 11:00

@顾晓北: ..

支持(0) 反对(0) JaneEyreWork | 园豆:11 (初学一级) | 2016-09-07 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册