关于Oracle

最后更新于:2022-04-01 23:47:26

**Oracle自增长的处理:** 众所周知,Oracle没有自增概念,需要创建一个sequence,然后获得唯一ID。 Eova的处理: **1.自动指定约定Sequence** 规则:seq_表名.nextval ``` public class EovaDbPro extends DbPro { public EovaDbPro(String configName) { super(configName); } @Override public boolean save(String tableName, String primaryKey, Record record) { // Oracle && 单主键 && 主键没值 -> 指定Sequence if (xx.isOracle() && !primaryKey.contains(",") && record.get(primaryKey) == null) { record.set(primaryKey, EovaConst.SEQ_ + tableName + ".nextval"); } return super.save(tableName, primaryKey, record); } } ``` 使用默认Seq举例: Sql: insert into eova_log(id, user_id, type, info, ip) values(seq_eova_log.nextval, ?, ?, ?, ?) **2.通过默认值自定义:** **2.1 自定义Sequence** 如果不想让系统指定固定Sequence 想自定义或者共用Sequence 可以使用默认值自行指定. 自定义Seq举例: create sequence seq_eova_user increment by 1 start with 21 maxvalue 9999999999; PS:这里对名字没有约束,sequence 可以随意取名,例如:my_seq_id 自行创建任意名字的sequence,然后通过 eova_field.defaulter 指定 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/d51941fad10bd13e8e0facbee59d7284_922x292.png) Sql: insert into eova_user(login_id, id, rid, nickname, login_pwd) values(?, seq_eova_user.nextval, ?, ?, ?) **2.2 默认ID值** ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/279c71e3b650cf621d4564213047497c_915x280.png) 新增后: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/d857b419a6c9391b0ee899d5d9b96c41_578x159.png) **2.3 生成全局唯一ID** 默认值填写 UUID即可 UUID规则:32位无去中划线全大写 ``` UUID.randomUUID().toString().replaceAll("-", "").toUpperCase() ``` ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/9ac08bf6e0462cbf4ee48864be1fe5f5_295x313.png) > 注意设置字段新增/更新状态=隐藏 **Other:** Eova提供了由Mysql自动生成Oracle脚本的工具类: DbUtil.createOracleSql(); 使用方法: 连接到Mysql数据源上: eova.config 配置: initSql = true 系统启动时会将Sql脚本输出在控制台,复制执行即可!
';