注册

更新后在短时间内还是得到原来的值

生命 2023/07/10 1156 5

declare
_max1 int;
_max2 int;
begin
lock table 征收协议 in exclusive mode;
SELECT MAX(CONVERT(INT, ISNULL(选房顺序号, 0))) into _max1
FROM 征收协议
INNER JOIN 审批表 ON 审批表.ID = 征收协议.审批表ID
INNER JOIN 产权情况 ON 产权情况.审批表id = 产权情况id
WHERE 作废日期 IS NULL;
SELECT MAX(CONVERT(INT, ISNULL(产权选房顺序号, 0))) into _max2
FROM 产权情况
INNER JOIN 审批表 ON 审批表.ID = 产权情况.审批表ID
WHERE 作废日期 IS NULL;
UPDATE 征收协议 SET 选房顺序号 =
RIGHT(CONCAT('000', CONVERT(NVARCHAR(10), ISNULL(GREATEST(_max1,_max2), 0) + 1)), 4)
FROM 征收协议
INNER JOIN 审批表 ON 审批表.ID = 征收协议.审批表ID
WHERE 作废日期 IS NULL AND 征收协议.审批表id={0} AND 选房顺序号 IS NULL;
commit;
end;
这段代码如果不通Session同时运行会得到相同的【选房顺序号】这样不正确,如果相同逻辑我在mysql,ms sqlserver,oracle都可以得到新增加的值。如果用达梦想这么写如何处理呢?

回答 0
暂无回答
扫一扫
联系客服