MySQL中使用序列Sequence的方式总结
2023-06-13 09:20:03 时间
在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的函数 delimitercreate 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中使用序列Sequence方式的文章就介绍到这了,更多相关MySQL使用序列Sequence内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL中使用序列Sequence的方式总结
相关文章
- 开心档之MySQL 序列使用
- 学习如何快速创建MySQL数据库脚本(创建mysql数据库脚本)
- MySQL设计原则:创建持久性体验(mysql设计原则)
- 符串MySQL连接字符串:学习有什么好处?(mysql连接字)
- MySQL中使用Delete语句删除数据(mysql中删除语句)
- 搜索MySQL 使用LIKE进行强大的搜索(mysql的like)
- MySQL命令行教程:学习使用MySQL命令行(mysql命令行教程)
- MySQL使用临时文件的优化方式(mysql临时文件目录)
- 的数据MySQL:获取第一天的数据(mysql获取第一天)
- 复制MySQL 复制二进制数据的技术指南(mysql二进制数据)
- 破解MySQL远程访问难题(远程不能访问mysql)
- MySQL索引分类及使用介绍(mysql索引有几种)
- 探讨MySQL大文本类型的优缺点及使用场景(mysql大文本类型)
- MySQL中NOT操作的使用方法与实例分析(mysql中not)
- MySQL的Jar包使用方法(mysql中jar包)
- C语言MySQL的异步操作实现思路(c mysql的异步实现)
- MySQL中的INT1数据类型解析(mysql中int 1)
- MySQL中如何使用false(mysql 中fasle)
- 使用C语言编写MySQL批处理提高数据库性能(c mysql 批处理)
- MySQL中如何使用AGE字段进行日期计算(mysql中age)
- 行使用CMD登录MySQL命令行界面(cmd登入mysql命令)
- 解决方法汇总如何解决MySQL不允许他人连接问题(mysql不允许别人连接)
- 保障数据完整性MySQL不丢失任何数据包(mysql不丢数据包)
- 附带工具,MySQL下载指南(mysql下载附带的工具)
- MySQL不支持TIME类型,需使用DATETIME代替(mysql不支持time)
- MySQL无法使用IP地址进行连接(mysql不支持ip链接)