问题描述
Declare @maxRowId int
Set @maxRowId=0
Declare @rowIndex int
Set @rowIndex=1
Declare @recordId bigint
Set @recordId=0
Begin Try
Declare @ReservedTickets table(RowId int,Id bigint,TicketCodeId nvarchar(100),Status nvarchar(100),DateTimeReserved datetime)
insert into @ReservedTickets
select ROW_NUMBER() OVER (ORDER BY Id) RowId,Id,TicketCodeId,Status,DateTimeReserved
from [dbo].[Ticket] with(nolock)
where status='reserved' and
datetimeReserved <= DATEADD(minute,-30,getdate())
select @maxRowId=max(RowId) from @ReservedTickets
while @rowIndex<=@maxRowId
BEGIN
Select @recordId=Id from @ReservedTickets where Rowid=@rowIndex
Begin TRAN
UPDATE upd_Ticket
set
upd_Ticket.Status='available',upd_Ticket.DateTimeReserved=null,RequestReference=null
from [dbo].[Ticket] upd_Ticket
INNER JOIN [dbo].[Ticket] slct_Ticket with(nolock)
ON upd_Ticket.Id = slct_Ticket.Id
where slct_Ticket.Id= @recordId and
slct_Ticket.status='reserved' and
slct_Ticket.datetimeReserved <= DATEADD(minute,getdate())
Commit TRAN
set @rowIndex=@rowIndex+1
END
select RV.Id,RV.status 'InitialStatus',V.status 'UpdatedStatus',RV.DateTimeReserved
from @ReservedTickets RV
Left join [dbo].[Ticket] V on
RV.Id=v.Id
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)