【发布时间】:2020-04-06 04:42:47
【问题描述】:
我正在使用 select nvl(max(customerid),0)+1 生成客户 ID。它正在工作,但每小时有近 700 到 1000 名客户加入。因此,在几毫秒内使用上述代码时,会话会获得相同的最大客户 ID。所以它引发了唯一的约束违规。我不想使用序列,因为如果交易失败。我会失去顺序。
下面是示例代码。
Create or replace procedure ADM_customerregisration
P_firstname varchar2,
P_lastname varchar2
As
V_customerid number;
Begin
Insert into mas_customerdetails
(
Customerid,
Firstname,
Lastname
)
Values
(
(Select nvl(max(customerid),0)+1 from mas_customerdetails),
P_firstname,
P_lastname
) returning customerid into v_customerid;
Commit;
Exception
When others then
Return;
End;
【问题讨论】:
-
请使用标签下方的
edit按钮编辑您的问题,并包含将实际编译的代码。谢谢。
标签: oracle auto-increment unique-constraint