代码如下:
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
请问上面代码为何不能起到控制"插入重复记录"的效果?
IF NOT EXISTS (SELECT * FROM Table_仓库_放量产品出库单_明细 WHERE 类型=@lx AND 货号=@ItemNo AND 出库单编号=@ckNo)
这个判断有问题,和 下面的updage 语句的过滤条件,是等价的吗?
我已经找到问题了 是事务那边出了问题 兄弟还是多谢了
什么意思?因为没用事务?
我的本意是想通过这段触发器控制表Table_仓库_放量产品出库单_明细里面不能插入重复记录(货号,类型,出库单编号),但是没用啊 请问这段代码哪里有问题
@OSManager: 太长懒得看
@顾晓北: ..