mybatis里的xml中的写添加的sql语句,怎么使用oracle数据库的序列

mybatis里的xml中的写添加的sql语句,怎么使用oracle数据库的序列,第1张

-- Oracle SEQUENCE 序列语法:

CREATE SEQUENCE 序列名 

[INCREMENT BY n] 

[START WITH n] 

[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] 

[{CYCLE|NOCYCLE}] 

[{CACHE n|NOCACHE}]; 

示例:

CREATE SEQUENCE sq_test -- 序列名

INCREMENT BY 1  -- 每次加几个  

START WITH 1  -- 从1开始计数  

MAXVALUE 9999999   -- 最大值9999999  

NOCYCLE    -- 一直累加,不循环  

NOCACHE;  

 

SELECT sq_testNEXTVAL FROM DUAL;

可以使用sequence的地方:  

-- 不包含子查询、snapshot、VIEW的 SELECT 语句  

-- INSERT语句的子查询中  

-- NSERT语句的VALUES中  

-- UPDATE 的 SET中    

可以看如下例子:  

INSERT INTO table_name VALUES (sq_testnextval,  'CLERK',1200, SYSDATE);

就是因为你重启数据库的原因吧,因为你设置了缓冲,cache size是保存在内存中的,重启之后应该就消失了,不会被保存。

嗯,楼上的回答也是原因之一,不过楼上的有一种方法避免,就是在确认会正确commit之后,再取seq的值,不过一般没什么意义,seq只是为了自动生成主键或者是给一个数据编成系统唯一标识用的,没啥意义,不用保持连续

1)首先,主键的递增是人为通过业务类型定义出来实现递增功能的(比如,每插入一条新记录就+1 *** 作,可能会是通过触发器来实现的),而序列(sequence)是oracle内置的东西,开销会比通过触发器(会涉及到io以及事务锁等方面的东西)来做少很多。

价值方面来讲,举个例子,在oracle rac环境中,一个cache值设定合理的noorder序列,就远比其他方式要好,这部分,我相信dba们会深有感触。

2) 序列有个nextval的属性,可以通过查询一次就会生成一次下一个序列,ex:

select myseqnextval from dual; --->当前返回10

再执行一次,返回11

同理,还有一个currval,用于查询当前序列值。

给你转发一下concepts上对sequence的描述:

The sequence generator provides a sequential series of numbers The sequence generator is especially useful in multiuser environments for generating unique sequential numbers without the overhead of disk I/O or transaction locking For example, assume two users are simultaneously inserting new employee rows into the employees table By using a sequence to generate unique employee numbers for the employee_id column, neither user has to wait for the other to enter the next available employee number The sequence automatically generates the correct values for each user

Therefore, the sequence generator reduces serialization where the statements of two transactions must generate sequential numbers at the same time By avoiding the serialization that results when multiple users wait for each other to generate and use a sequence number, the sequence generator improves transaction throughput, and a user's wait is considerably shorter

序列

(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

以上就是关于mybatis里的xml中的写添加的sql语句,怎么使用oracle数据库的序列全部的内容,包括:mybatis里的xml中的写添加的sql语句,怎么使用oracle数据库的序列、关于oracle序列的问题、关于oracle 序列器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9872802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存