oracle序列和mysql序列
2017-05-18 16:59
274 查看
1.什么是序列?
序列: 可供多个用户用来产生唯一数值的数据库对象
2.为什么用序列?
自动提供唯一的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率
3.怎么用序列?(重点)
oracle序列和mysql序列
oracle序列
创建
CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10 --每次增长的数值
START WITH 120 --从哪个值开始
MAXVALUE 9999 --最大值
[{MINVALUE n | NOMINVALUE}]
NOCACHE --是否缓存
NOCYCLE;--是否循环
查询
SELECT dept_deptid_seq.NEXTVAL FROM dual
SELECT dept_deptid_seq.CURRVAL FROM dual
修改
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;
删除
DROP SEQUENCE dept_deptid_seq;
mysql序列
创建sequence表
创建nextval和currentval函数
维护序列表就可以完成对序列的维护,通过DML完成序列的增删改查操作
最后使用select nextval("s_blog_account")即可得到下一个值
序列: 可供多个用户用来产生唯一数值的数据库对象
2.为什么用序列?
自动提供唯一的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率
3.怎么用序列?(重点)
oracle序列和mysql序列
oracle序列
创建
CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10 --每次增长的数值
START WITH 120 --从哪个值开始
MAXVALUE 9999 --最大值
[{MINVALUE n | NOMINVALUE}]
NOCACHE --是否缓存
NOCYCLE;--是否循环
查询
SELECT dept_deptid_seq.NEXTVAL FROM dual
SELECT dept_deptid_seq.CURRVAL FROM dual
修改
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;
删除
DROP SEQUENCE dept_deptid_seq;
mysql序列
创建sequence表
CREATE TABLE IF NOT EXISTS `sequence` ( `name` varchar(50) NOT NULL, `current_value` int(11) NOT NULL, `increment` int(11) NOT NULL DEFAULT '1' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='序列表,命名s_[table_name]'; INSERT INTO `sequence` (`name`, `current_value`, `increment`) VALUES ('s_blog_account', 0, 1) |
DROP FUNCTION IF EXISTS `currval`; DELIMITER // CREATE FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11) READS SQL DATA DETERMINISTIC BEGIN DECLARE VALUE INTEGER; SET VALUE = 0; SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name; RETURN VALUE; END// DELIMITER ; |
DROP FUNCTION IF EXISTS `nextval`; DELIMITER // CREATE FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11) DETERMINISTIC BEGIN UPDATE sequence SET current_value = current_value + increment WHERE NAME = seq_name; RETURN currval(seq_name); END// DELIMITER ; |
最后使用select nextval("s_blog_account")即可得到下一个值
相关文章推荐
- mysql模仿oracle序列
- MySql 和 Oracle 差异 如何建立数据库脚本,序列,自增长
- 与Oracle有所不同,ibatis中实现获取mysql自增序列值
- Mybatis之序列插入语句(Mysql和Oracle)
- MySQL实现类似Oracle的序列
- MySQL实现类似Oracle的序列
- MySQL实现类似Oracle的序列 - sequence
- mysql模拟oracle序列
- Mysql 与 Oracle 序列问题
- MySQL实现ORACLE序列(Sequence)的解决方案
- Oracle和Mysql分别生成sequence序列
- MySQL实现类似Oracle的序列
- MySQL实现类似Oracle的序列
- MySQL---ORACLE序列解决方案
- MySQL实现类似Oracle的序列
- MySQL 实现Oracle序列
- MySQL模拟Oracle序列sequence
- MySQL实现类似Oracle序列的函数
- Oracle 和 mysql 的一些简单命令对比参照
- Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台) 选择自 dazern 的 Blog