为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:win10
【CPU】:
【问题描述】*:现在有一个业务,在录入信息时会形成一个编号,格式为:00000000这样的编号,从00000001开始。现在达梦应该怎么改写,也查阅了文档,但是不确定是否正确。
sql server时的写法:利用了排他锁,页锁(也是个粒度)
select @strnumber=right('00000000'+cast(cast(isnull(max(productnum),0) as int)+1 as varchar),8) from machineinfopush WITH(XLOCK,PAGLOCK)
where [year]=@intYear and AreaCode=@intAreaCode
现在在达梦中,因为for update 子句在这里没办法使用,
现在是这样写的。请各位老师看看这是否正确,我应该如何写sql 以及测试呢?
LOCK table TD_MACHINE_PUSH IN EXCLUSIVE MODE;
select right('00000000'+cast(cast(isnull(max(productnum),0) as int)+1 as varchar),8) from TD_MACHINE_PUSH
where [year]=2023 and AreaCode=34
您可以用序列来实现,这样就不需要考虑锁了