当前位置:网站首页>数据库-序列
数据库-序列
2022-06-26 14:52:00 【EbowTang】
参考ORACLE总结,但是测试参考KES和ORACLE
1、序列的创建:
CREATE SEQUENCE SEQUENCE_NAME
INCREMENT BY n
START WITH n
MAXVALUE n | NOMAXVALUE
MINVALUE n | NOMINVALUE
CYCLE | NOCYCLE
CACHE n | NOCACHE | ORDER;相关参数说明:
INCREMENT BY n 序列递增幅度
START WITH n 序列开始值
MAXVALUE n 序列最大值
MINVALUE n 序列最小值
CYCLE 序列序号循环使用
CACHE n 序列序号缓存个数,默认20个,默认NOORDER模式。
CACHE n ORDER 在RAC中共用一个SEQUENCE的CACHE,NOORDER不共用CACHE。
数据字典:
user_sequences, all_sequences, dba_sequences
SELECT * FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = 'SEQUENCE_NAME';2、序列的管理:
可以修改的值:增幅、最大值、最小值、循环使用、缓存。
不能修改的值:开始值。(oracle限制,KES没有)
修改开始值必须删除重建。
ALTER SEQUENCE SEQUENCE_NAME
INCREMENT BY n
MAXVALUE n
MINVALUE n
CYCLE
CACHE n;删除以及授权:
DROP SEQUENCE sequence_name;
GRANT SELECT ON sequence_name TO user_name;
GRANT ALTER ANY SEQUENCE;3、序列的使用:
NEXTVAL 下一个序号
CURRVAL 当前的序号
例:
SELECT sequence_name.nextval FROM dual;
SELECT sequence_name.currval FROM dual;发生回滚后,序列不能回滚,会发生序列号不连续的情况。
4、Cache设置注意事项:
NOCACHE不会造成序列跳号,但是并发性能比较差,会造成row cache lock等待事件。
在RAC环境中SEQUENCE CACHE适量的设置大一点,避免序列竞争导致,如每秒会有上万次SELECT,
并发量很大cache需要设置为100甚至1000以上。
不同cache模式的等待事件:
NOCACHE --> row cache lock
CAHCE+NOORDER --> enq: SQ-contention(SQ lock)
CACHE+ORDER(RAC) --> DFS look handle(SV lock)
5,序列的小结
,5.1 思维导图

5.2 测试代码
在KES测试通过,在ORACLE部分代码验证过(应该也能通过)
-------------------------------------
----序列的测试
-------------------------------------
--最大值10的序列
-- Create sequence
drop sequence if exists SEQ_TEST;--删除序列
create sequence SEQ_TEST
maxvalue 9999
minvalue 1000
start with 1000
increment by 2
cache 20
nocycle;
--dual是Oracle中的⼀个伪表,利⽤这个伪表可以设置或查看序列,
--或者是调⽤⼀些内置的函数,可以很⽅便的时候。
--序列调用 产生一个新的序列,再执行一次数值就会变
select SEQ_TEST.nextval from dual
--查看当前序列的值,反复执行数字不会变
select SEQ_TEST.currval from dual
--从这个SEQ_TEST序列中选取下一个数字:
SELECT nextval('SEQ_TEST');
---------------------------------
-----------查看序列视图信息---------
---------------------------------
--序列的视图查看
select * from user_sequences;
select * from all_sequences;
select * from dba_sequences;
---通过序列视图查看指定的信息
select min_value,max_value,increment_by,last_number,cycle_flag
from dba_sequences
where sequence_name = 'SEQ_TEST';
--创建实验表
drop TABLE if exists student;--删除序列
CREATE TABLE student (
stu_nmb number(8),
stu_name char(8) not null,
gender varchar2(2),
age number(2), --检查约束
class varchar2 (40) not null,
email varchar2 (30),
sdate DATE,
---执行约束
constraint pk_nmb primary key (stu_nmb),
constraint ck_check check ( gender in ('男','女')),
constraint ck_age check (age BETWEEN 18 AND 30), --检查约束
constraint uq_student_email UNIQUE (email)
);
--用来生成主键序列
INSERT INTO student VALUES(nextval('SEQ_TEST'),'张德田','男',19,'高三第6班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'吴海峰','男',18,'高三第1班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'章德正','男',20,'高三第8班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'宋义','女',20,'高三第3班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'张华乐','女',19,'高三第4班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'黎文','女',19,'高三第4班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'吉祥','男',21,'高三第7班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'向玲','女',19,'高三第1班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'梅田田','女',21,'高三第7班','[email protected]',SYSDATE);
select stu_nmb,stu_name
from student;
--结果
stu_nmb stu_name
1014 张德田
1018 吴海峰
1020 章德正
1022 宋义
1024 张华乐
1026 黎文
1028 吉祥
1030 向玲
1032 梅田田
----修改视图
--将原视图的下列属性进行修改
--请注意合理性,下列修改不合理,因为start with 1000
alter sequence seq_test
minvalue 2000
maxvalue 8000
increment by 2
cycle
--对于oracle而言,下列也是不合理的---不支持直接变更起始值
--oracle报错ORA-02283: 无法变更启动序列号
alter sequence seq_test
minvalue 1000
start with 3100
maxvalue 7000
increment by 5
cycle ;
------
--不合理,因为起始值是3100
alter sequence seq_test
minvalue 1000
maxvalue 3000
increment by 5
cycle ;
-----
--1.更改increment为一个你想让序列增加到的值
alter sequence seq_xxrs increment by 1000;
--2.执行一次查询序列的语句
select seq_xxrs.nextval from dual;
--3.然后将increment改回来
alter sequence seq_xxrs increment by 1;
--此时的序列的起始值值就增大了。
---通过序列视图查看指定的信息
select min_value,max_value,increment_by,cycle_flag,start_value
from all_sequences
where sequence_name = 'SEQ_TEST';边栏推荐
- Execution of commands in the cluster
- Mark: unity3d cannot select resources in the inspector, that is, project locking
- Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
- 杜老师说网站更新图解
- The R language cartools package divides data, the scale function scales data, and the KNN function of the class package constructs a k-nearest neighbor classifier
- Optimizing for vectorization
- The engine "node" is inconsistent with this module
- Redis cluster re fragmentation and ask command
- Is it safe to open a stock account with the account manager online??
- Practical website recommendations worth collecting for College Students
猜你喜欢

15 bs对象.节点名称.节点名称.string 获取嵌套节点内容

Solution to the upper limit of TeamViewer display devices

RestCloud ETL与Kettle对比分析

Bank of Beijing x Huawei: network intelligent operation and maintenance tamps the base of digital transformation service

使用 Abp.Zero 搭建第三方登录模块(一):原理篇

使用RestCloud ETL Shell组件实现定时调度DataX离线任务

Halcon C # sets the form font and adaptively displays pictures

Restcloud ETL extracting dynamic library table data

Mark一下 Unity3d在Inspector中选中不了资源即Project锁定问题

The engine "node" is inconsistent with this module
随机推荐
Optimizing for vectorization
【使用yarn运行报错】The engine “node“ is incompatible with this module.
php文件上传00截断
Mark一下 Unity3d在Inspector中选中不了资源即Project锁定问题
R language GLM function logistic regression model, using epidisplay package logistic The display function obtains the summary statistical information of the model (initial and adjusted odds ratio and
Deployment of kubernetes' controller
R语言使用ggplot2可视化泊松回归模型(Poisson Regression)的结果、可视化不同参量组合下的计数结果
ETL过程中数据精度不准确问题
Transformers datacollatorwithpadding class
Redis事务与watch指令
同花顺注册开户安全吗,有没有什么风险?
Complimentary Book Cognitive Control: how does our brain accomplish tasks?
Idea shortcut key
Principle of TCP reset attack
详解C语言编程题:任意三条边能否构成三角形,输出该三角形面积并判断其类型
关于 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error 解决方案(已解决)
集群中命令的执行过程
Program analysis and Optimization - 8 register allocation
Unity C# 网络学习(十)——UnityWebRequest(二)
【 Native cloud】 Éditeur ivx Programmable par tout le monde