推薦學習:mysql影片教學
#在Oracle資料庫中若想要一個連續的自增的資料類型的值,可以透過創建一個sequence來實現。而在MySQL資料庫中並沒有sequence。通常如果一個表只需要一個自增的列,那麼我們可以使用MySQL的auto_increment(一個表只能有一個自增主鍵)。若想要在MySQL像Oracle中那樣使用序列,我們該如何操作呢?
例如存在如下表定義:
create table `t_user`( `id` bigint auto_increment primary key, `user_id` bigint unique comment '用户ID', `user_name` varchar(10) not null default '' comment '用户名' );
其中user_id要求自增有序且唯一。實作方式有很多像是雪花演算法、使用Redis或Zookeeper等都可以取得一個符合條件的值,這裡就不一一介紹。這裡介紹使用MySQL的auto_increment和last_insert_id()來實作類似Oracle中的序列的方式。
範例如下:
create table `t_user_id_sequence` ( `id` bigint not null auto_increment primary key, `t_text` varchar(5) not null default '' comment 'insert value' );
delimiter && create procedure `pro_user_id_seq` (out sequence bigint) begin insert into t_user_id_sequence (t_text) values ('a'); select last_insert_id() into sequence from dual; delete from t_user_id_sequence; end && delimiter ;
call pro_user_id_seq(@value); select @value from dual;
使用預存程序的方式需要呼叫一次預存程序再進行賦值,稍微有點麻煩。
delimiter && create function user_id_seq_func() returns bigint begin declare sequence bigint; insert into t_user_id_sequence (t_text) values ('a'); select last_insert_id() into sequence from dual; delete from t_user_id_sequence; return sequence; end && delimiter ;
select user_id_seq_func() from dual; insert into t_user (user_id, user_name) values (user_id_seq_func(), 'java'); select * from t_user;
推薦學習:mysql視頻教程
以上是MySQL中使用序列Sequence的方式總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!