oracle序列和mysql序列

2021-08-01 07:40:20 字數 1935 閱讀 6019

1.什麼是序列?

序列: 可供多個使用者用來產生唯一數值的資料庫物件

2.為什麼用序列?

自動提供唯一的數值

共享物件

主要用於提供主鍵值

將序列值裝入記憶體可以提高訪問效率

3.怎麼用序列?(重點)

oracle序列和mysql序列

oracle序列

建立create sequence dept_deptid_seq

increment by 10 --每次增長的數值

start with 120 --從哪個值開始

maxvalue 9999 --最大值

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) 

建立nextval和currentval函式

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 ;

維護序列表就可以完成對序列的維護,通過dml完成序列的增刪改查操作

最後使用select nextval("s_blog_account")即可得到下乙個值

mysql模仿oracle序列

drop table if exists sequence create table sequence idval int unsigned auto increment,primary key idval engine innodb drop function if exists nextval ...

Oracle序列和索引

1.生成13579迴圈序列 create sequence mysql increment by 2 cache 3 快取 刪除序列 drop sequence 序列名 修改序列 alter sequence 序列名 2.索引 對某一類資料進行制定結構排序的操作 b樹索引 降序索引 函式索引 位圖索...

MySQL模擬Oracle序列sequence

沒發現,這麼多同學有這個需求,把文件補充一下,其實就是建立1個表,和2個儲存過程。利用表的行級鎖模擬每乙個表的序列增減。drop table if exists sys sequence create table sys sequence seq name varchar 50 not null,c...