自增长

Oracle中Sequence序列的使用

瘦欲@ 提交于 2020-03-10 23:53:10
在oracle中sequence就是序列,每次取的时候它会自动增加。Sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXvalue -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE 2、得到Sequence值 定义好sequence后,你就可以用currVal,nextVal取得值。 CurrVal:返回 sequence的当前值 NextVal:增加sequence的值,然后返回 增加后sequence值 得到值语句如下: SELECT Sequence名称.CurrVal FROM DUAL; 如得到上边创建Sequence值的语句为: select seqtest.currval from dual; 在Sql语句中可以使用sequence的地方: - 不包含子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 -

表主键自增长Mybatis插入数据报错

我怕爱的太早我们不能终老 提交于 2020-01-07 20:24:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在使用MyBatis进行开发的过程中,当你遇到向某张数据库表中插入一条记录时,出现数据插入不正确,如果自己确定是因为主键的原因,类似如下错误提示: 而你的本意是主键自动增长,那么,可参考如下方法尝试解决: 第一步:在配置中设置主键为自增长(数据库我使用的是MySql) 如果你是使用MyBatis自动生成的插入语句,除了设置上面给出的useGeneratedKeys=”true”之外,还需要将如下图所示红色部分去掉,这是查询主键最大值的一段代码。 如果还未解决,这时你应该检查一下你的数据库表中主键设置,是否为自动增长设置。 可以在sql语句中主键后加上auto_increment. 如果你使用的是工具“Navicat for MySQL”,比如我要设置如图所示中tb-device_basic表的主键为自动增长,点击“设计表”,再将“自动增长”勾中即可,然后再尝试一下。 来源: oschina 链接: https://my.oschina.net/u/781254/blog/466470