Ebean/DB模拟Oracle序列生成ID
2018-01-02 14:59
579 查看
通过for update给ID表加一把锁,保证数据的一致性
public static Long genSeqId() { Long newId = 0L; String sql = "select seq_value from seq_table where seq_name = 'tbs_meminfo_id' for update"; EbeanServer server = Ebean.getServer("rds"); try { server.beginTransaction(); SqlRow row = server.createSqlQuery(sql).findUnique(); Long oldId = row.getLong("seq_value"); sql = "update seq_table set seq_value = " + (oldId + 1) + " where seq_value = " + oldId + " and seq_name = 'tbs_meminfo_id'"; int result = server.createSqlUpdate(sql).execute(); if (result > 0) { newId = oldId + 1; } } catch (Exception e) { e.printStackTrace(); newId = -1L; } finally { server.commitTransaction(); } return newId; }
相关文章推荐
- mysql模拟生成id,弥补没有oracle中rownum的遗憾
- Oracle插入带序列id的数据
- 【Oracle】利用触发器,序列实现id自增长
- Shell: how to list all db links in oracle DB to generate a flat file (生成dblink列表文件)
- oracle创建表,序列,触发器,自动生成唯一主键
- Oracle主键ID设置自动增长(序列+触发器)
- oracle 生成序列脚本
- oracle id的序列 mybatis*(最好用before)#和$的区别
- Oracle序列生成订单流水号
- oracle 创建触发器和序列(id自增)
- Oracle主键ID设置自动增长(序列+触发器)
- Oracle 表创建序列-触发 实现表ID自动增长
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- [DB][OARCLE]在Oracle中生成GUID类型--SYS_GUID()函数
- Oracle唯一主键ID的生成
- Oracle如何根据SQL_TEXT生成SQL_ID
- oracle 生成自增序列
- oracle主键自动增长的实现 Oracle Sequence oracle maxid自动生成--ORA-00001: 违反唯一约束条件 (NAME.SYS_C005547)产生的原因之一(select * from all_cons_columns w
- oracle结合序列和触发器生成表的主键
- Oracle建表,建序列,建触发器,自动生成唯一主键