NutzCN Logo
问答 执行insert 不带回生成的ID
发布于 2660天前 作者 tuosun 1753 次浏览 复制 上一个帖子 下一个帖子
标签:

执行insert 不带回生成的ID

13 回复

ID有写成自增长主键么,设置了ID值么,,不贴代码怎么看?

 @Name
    @Column("GDS_NO")
    private String id;

oracle数据库,序列加触发器

序列不是数值吗??

序列是数值 ,但是在触发器里面加上了时间+序列的值做的,所以用了string

@wendal 里面用sql去查么? 如果我把类型改为long呢? 时间格式话了的 没有符号,nutzDao 里面是怎么处理的?

"时间格式话了的 没有符号" 是啥意思? SQL来一条

@wendal

--序列
CREATE SEQUENCE ZB_INV_INFO_NO_SEQ MAXVALUE 9999 INCREMENT BY 1 START WITH 1 CACHE 10 CYCLE;

--触发器
CREATE OR REPLACE TRIGGER ZB_INV_INFO_NO_ST
BEFORE INSERT ON ZB_INV_INFO FOR EACH ROW
BEGIN
       SELECT TO_CHAR(SYSDATE,'YYMMDDHH24MISS')||LPAD(TO_CHAR(ZB_INV_INFO_NO_SEQ.NEXTVAL),4,'0') INTO :NEW.INV_NO FROM DUAL;
END ZB_INV_INFO_NO_ST;

@wendal 生成的ID是这样的

1612180941480032

在数据库里面定义的主键类型是

CHAR(16)

最终,还是得写个SQL取出这个触发器生成的值,但这个SQL怎么写呢, 貌似写不出来...

@wendal 一脸懵逼ing...

@wendal

SELECT MAX(GDS_NO) FROM ZB_GDS_INFO;

这样写,但是并发的话就会出问题的样子。、。。

@tuosun 会在一个事务内. 可以考虑多加一个属性,存个uuid

添加回复
请先登陆
回到顶部