mysql實現序列效果
一般使用序列(sequence)來處理主鍵字段,在mysql中是沒有序列的,但是mysql有提供了自增長(increment)來實現類似的目的,但也只是自增,而不能設定步長、開始索引、是否迴圈等,最重要的是一張表只能由乙個字段使用自增,但有的時候我們需要兩個或兩個以上的字段實現自增(單錶多字段自增),mysql本身是實現不了的,但我們可以用建立乙個序列表,使用函式來獲取序列的值
1. 新建序列表
drop table if exists sequence;
create table sequence (
seq_name varchar(50) not null, -- 序列名稱
current_val int not null, -- 當前值
increment_val int not null default 1, -- 步長(跨度)
primary key (seq_name) );
2. 新增乙個序列
insert into sequence values ('seq_test1_num1', '0', '1');
insert into sequence values ('seq_test1_num2', '0', '2');
3. 建立 函式 用於獲取序列當前值(v_seq_name 引數值 代表序列名稱)
create function currval(v_seq_name varchar(50))
returns integer
begin
declare value integer;
set value = 0;
select current_val into value from sequence where seq_name = v_seq_name;
return value;
end;
4. 查詢當前值
select currval('seq_test1_num1');
5. 建立 函式 用於獲取序列下乙個值(v_seq_name 引數值 代表序列名稱)
create function nextval (v_seq_name varchar(50))
returns integer
begin
update sequence set current_val = current_val + increment_val where seq_name = v_seq_name;
return currval(v_seq_name);
end;
6. 查詢下乙個值
select nextval('seq_test1_num1');
7. 新建表 用於測試的表
drop table if exists `test1`;
create table `test1` (
`name` varchar(255) not null,
`value` double(255,0) default null,
`num1` int(11) default null,
`num2` int(11) default null,
primary key (`name`)
);8. 新建觸發器 插入新紀錄前給自增欄位賦值實現欄位自增效果
create trigger `tri_test1_num1` before insert on `test1` for each row begin
set new.num1 = nextval('seq_test1_num1');
set new.num2 = nextval('seq_test1_num2');
end9. 最後測試自增效果
insert into test1 (name, value) values ('1', '111');
insert into test1 (name, value) values ('2', '222');
insert into test1 (name, value) values ('3', '333');
insert into test1 (name, value) values ('4', '444');
10. 結果展示
select * from test1;
Oracle自動增長序列介紹 sequence
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...
MySQL實現序列
mysql實現序列效果 一般使用序列 sequence 來處理主鍵字段,在mysql中是沒有序列的,但是mysql有提供了自增長 increment 來實現類似的目的,但也只是自增,而不能設定步長 開始索引 是否迴圈等,最重要的是一張表只能由乙個字段使用自增,但有的時候我們需要兩個或兩個以上的字段實...
Mysql實現序列
mysql實現序列效果 一般使用序列 sequence 來處理主鍵字段,在mysql中是沒有序列的,但是mysql有提供了自增長 increment 來實現類似的目的,但也只是自增,而不能設定步長 開始索引 是否迴圈等,最重要的是一張表只能由乙個字段使用自增,但有的時候我們需要兩個或兩個以上的字段實...