Create Proc GetLugageNum
@ShipTicketNO varchar(50),
@OriDate varchar(50),
@OriHB varchar(50),
@LugageCount integer
as --exec GetLugageNum '20060218034792','2006-02-18','10:00',100declare @Temp integer ,@i integertable_loop:set @i=1
Select @Temp=isnull(max(Lug_no),28800000) from LuggageBound where Lug_no like '00288_____'
BEGIN TRANSACTION while @i<=@LugageCount
begin
insert into LuggageBound(ShipTicketNO,OriDate,OriHB,Lug_no,IsLeave,IsThrough)
values(@ShipTicketNO,@OriDate,@OriHB,'00'+cast(@Temp+@i as varchar(10)),0,0) --假如我插入10条记录的话?如果在每5条重复,实际上前4条是不是已经进入了数据库呢? IF @@ERROR <> 0 --重复时候前台程序还会报主键冲突错?
BEGIN
ROLLBACK TRANSACTION --插入重复值时回滚
GOTO table_loop --跳转至table_loop重新执行
END set @i=@i+1
end
COMMIT TRANSACTION
GO
@ShipTicketNO varchar(50),
@OriDate varchar(50),
@OriHB varchar(50),
@LugageCount integer
as --exec GetLugageNum '20060218034792','2006-02-18','10:00',100declare @Temp integer ,@i integertable_loop:set @i=1
Select @Temp=isnull(max(Lug_no),28800000) from LuggageBound where Lug_no like '00288_____'
BEGIN TRANSACTION while @i<=@LugageCount
begin
insert into LuggageBound(ShipTicketNO,OriDate,OriHB,Lug_no,IsLeave,IsThrough)
values(@ShipTicketNO,@OriDate,@OriHB,'00'+cast(@Temp+@i as varchar(10)),0,0) --假如我插入10条记录的话?如果在每5条重复,实际上前4条是不是已经进入了数据库呢? IF @@ERROR <> 0 --重复时候前台程序还会报主键冲突错?
BEGIN
ROLLBACK TRANSACTION --插入重复值时回滚
GOTO table_loop --跳转至table_loop重新执行
END set @i=@i+1
end
COMMIT TRANSACTION
GO
这时候的事务是挂起的