一淘模板给人人带来了对于于mysql的相干知识,序列是一组整数如1,2,3,...为了在需要时天生的,下面介绍了对于于MySQL中应用序列Sequence的相干资料,希望对于人人有帮助。
在Oracle数据库中若想要一其中断的自增的数据范例的值,能够通过建立一个sequence来实现。而在MySQL数据库中并无sequence。一般如果一个表只要要一个自增的列,那末咱们能够应用MySQL的auto_increment(一个表只能有一个自增主键)。若想要在MySQL像Oracle中那样应用序列,咱们该怎样操纵呢?
比方存在下列表界说:
create table `t_user`(`id` bigint auto_increment primary key,`user_id` bigint unique co妹妹ent '用户ID',`user_name` varchar(10) not null default '' co妹妹ent '用户名');
其中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 '' co妹妹ent 'insert value');
二、建立一个存储进程
delimiter &&create procedure `pro_user_id_seq` (out sequence bigint)begininsert 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;
应用存储进程的形式需要调用一次存储进程再停止赋值,细微有点贫苦。
一、建立一个天生sequence的函数
delimiter &&create function user_id_seq_func() returns bigintbegindeclare 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;
本文链接:https://addon.ciliseo.com/zong-jie-mysql-zhong-shi-yong-xu-lie-sequence-de-fang-shi.html
网友评论
shsjmw
回复序列揭示了事件间深刻联系的秘密,引发观众思考并催生深度探索。
pfjalofim
回复主键是一部深入探讨数据库核心概念的优秀作品,对于编程和数据分析领域具有重要价值。