一淘模板给大家带来了关于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 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;
使用存储过程的方式需要调用一次存储过程再进行赋值,稍微有点麻烦。
方式二、使用function
一、创建一个生成sequence的函数
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;
常见问题
所有VIP可以商用吗,会不会有版权问题?
本站提供的源码大部分可以作为源码开发参考和学习,部分开源可商用。
账号可以分享给其他人使用吗?
您好,账号禁止共享,我们有验证机制的,会自动封号处理,谢谢配合。
如果遇到问题怎么联系解决呢?
最快的途径是在导航菜单选择提交【售后】会在24小时处理
下载的源码可以使用吗?
我们会在显著的地方表明【已测试】,显示已测试的都是小编测试过 。
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5.如有侵权请联系客服邮件770973008@qq.com
原文链接:https://www.56admin.com/27279.html,转载请注明出处。
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5.如有侵权请联系客服邮件770973008@qq.com
原文链接:https://www.56admin.com/27279.html,转载请注明出处。
评论0