Sql 使用(UPDLOCK、READPAST)和按顺序-不工作?

Sql 使用(UPDLOCK、READPAST)和按顺序-不工作?,sql,sql-server-2005,sql-order-by,Sql,Sql Server 2005,Sql Order By,我正在尝试从我的数据库中选择代码,但我不需要其他人在我有机会更新代码之前来选择相同的代码。我尝试过只使用updlock,这解决了我的重复销售问题,但它增加了死锁的问题。所以现在我使用(UPDLOCK,readpass),在我尝试在我的语句中使用orderby之前,它工作得非常好 微软SQL 2005 BEGIN TRANSACTION SELECT Top 10 ID FROM dbo.CODES with (UPDLOCK, READPAST) where ItemNo = 'type-2

我正在尝试从我的数据库中选择代码,但我不需要其他人在我有机会更新代码之前来选择相同的代码。我尝试过只使用updlock,这解决了我的重复销售问题,但它增加了死锁的问题。所以现在我使用(UPDLOCK,readpass),在我尝试在我的语句中使用orderby之前,它工作得非常好

微软SQL 2005

BEGIN TRANSACTION

SELECT Top 10 ID FROM dbo.CODES 
with (UPDLOCK, READPAST)
where ItemNo = 'type-2' AND Sold = 0 
order by cast(NowStamp as DateTime) ASC

COMMIT TRANSACTION

我觉得我的问题将来自索引。

这与

答案说明您还需要行锁和索引。不幸的是,您无法在该列上创建索引,因为由于强制转换,它被认为是不确定的(请参阅上的第一个注释)


您应该使用CONVERT并从以下位置指定确定性样式:

当我尝试在事务中使用ORDER BY时,它锁定了整个表,不允许运行同一事务。