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...