ORACLE数据库之主键为UUID插入数据库如何返回当前主键

废话不多说直接进主题:

一、PowerDesigner设计数据库导出SQL有时会出现表和视图不存在问题处理:

如果你使用的PowerDesigner设计的数据库在导出SQL的时候一个坑不得不踩,需要你的PowerDesigner设置如下:

1. 点击DataBase

2. 选择 “Edit Current DBMS ” 做以下设置

操作这些的目的是让PowerDesigner生产的SQL都是大写的而且完全避免上述问题的发生。

问题产生的原因是:

        因为oracle 数据库是区分大小写的,如果你创建表的时候是小写表名和 字段,那么你的项目所有操作表的SQL 都要有双引号("表名,字段名 ")引起来处理不然就会报 “表或试图不存在”,如果你不加双引号,在操作数据库的时候oracle 会默认吧SQL都转成大写,就对应不上你的小写的表和视图啦。当创建表的时候表名和字段都是大写这样就会兼容你的大小写的操作SQL。

二、oracle设计数据库主键为UUID:

其实很简单就是如下所示(给你的主键设置默认值 调用这个函数即可 default sys_guid()):

create table  EMS_BASE_CUSTOMER_INFO 
(
   ID                VARCHAR(50)    default sys_guid() not null,
   BS_ID             LONG           DEFAULT 0	       not null,
   CUSTOMER_MOBILE   VARCHAR(20)    DEFAULT ''	       not null,
   TRADING_MOBILE    VARCHAR2(20)   DEFAULT ''	       not null,
   CUSTOMER_TYPE     NUMBER         DEFAULT 0	       not null,
   CUSTOMER_NAME     VARCHAR2(100)  DEFAULT ''	       not null,
   CARD_TYPE         NUMBER         DEFAULT 0	       not null,
   CARD_NO           VARCHAR(50)   	DEFAULT ''	       not null,
   BASE_ID           VARCHAR2(20)   DEFAULT ''	       not null,
   STATUS            NUMBER         DEFAULT 0	       not null,
   CREATE_TIME       TIMESTAMP                         not null,
   UPDATE_TIME       TIMESTAMP                         not null,
   constraint PK_CUSTOMER_INFO primary key (ID)
);

如果是想LONG类型自增的话需要在创建表之前添加这样的执行语句:

create sequence SEQ_表名
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;

然后每次插入的时候给你的LONG 型ID 赋值为 insrt into 表名(id)values(SEQ_表名.Nextval) 即可

三、oracle返回当前插入的UUID主键:

其实很简单结合Mybatis的配置,SQL如下

SQl必须给ID这个字段有赋值这个操作不然你的数据库生产的uuID和返回不是一个ID,还有一个问题就是,你传递的过来的是一个没有 ID 的实体,那么在代码中insert 之后 直接使用 该实体 getId() 即可获取。

如有披露或问题欢迎留言或者入群探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值