废话不多说直接进主题:
一、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() 即可获取。
如有披露或问题欢迎留言或者入群探讨