Oracle批量插入数据(2条数据以上),自己如何根据规则生成唯一标识ID?

问题如题,例如生成ID规则是,例如201811060001是日期+当天的第几条数据,同时插入2条以上的数据,怎么根据该规则生成ID?createorreplacetrig... 问题如题,例如
生成ID规则是,例如 201811060001 是 日期 + 当天的第几条数据,
同时插入2条以上的数据,怎么根据该规则生成ID?
create or replace trigger WT_CP_ORD_TRIGGER
  before insert on WT_CP_ORD
  for each row
declare
  -- local variables here
begin
  if :NEW.ord_id is null then
    :NEW.ord_id :=
(select
case when SUBSTR(max(b.ord_id),1,8) != to_char(sysdate,'yyyyMMdd') then to_char(sysdate,'yyyyMMdd')||'001'
else max(b.ord_id)+1||'' end
from WT_CP_ORD b);
  end if;
end;
这个ID生成,多条数据就重复,如果是主键,就会报错主键冲突
展开
 我来答
殇忄路
2018-11-06 · TA获得超过560个赞
知道小有建树答主
回答量:478
采纳率:81%
帮助的人:327万
展开全部

跟你一个解决办法吧

1. 创建一个序列

CREATE SEQUENCE SEQ_DEMO
INCREMENT BY 1
START WITH 0
NOMAXVALUE
NOCYCLE
NOCACHE;

2. 替换触发器赋值部分

:NEW.ord_id := to_char(sysdate,'yyyyMMdd') || lpad(to_char(mod(SEQ_DEMO.nextval,1000)),3,'0')
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式