mysql实现类似oracle的序列,mysql 创建[序列],功能类似于oracle的序列
参考自菜鸟教程
使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度)
第一步:创建Sequence管理表 sequence
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY (name)
) ENGINE=InnoDB;
第二步:创建取当前值的函数 currval
DROP FUNCTION IF EXISTS currval;
DELIMITER $
CREATE FUNCTION currval (seq_name VARCHAR(50))
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE value INTEGER;
SET value = 0;
SELECT current_value INTO value
FROM sequence
WHERE name = seq_name;
RETURN value;
END
$
DELIMITER ;
第三步:创建取下一个值的函数 nextval
DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
UPDATE sequence
SET current_value = current_value + increment
WHERE name = seq_name;
RETURN currval(seq_name);
END
$
DELIMITER;
第四步:创建更新当前值的函数 setval
DROP FUNCTION IF EXISTS setval;
DELIMITER $
CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
UPDATE sequence
SET current_value = value
WHERE name = seq_name;
RETURN currval(seq_name);
END
$
DELIMITER ;
测试函数功能
当上述四步完成后,可以用以下数据设置需要创建的sequence名称以及设置初始值和获取当前值和下一个值。
INSERT INTO sequence VALUES ('TestSeq', 0, 1);
----添加一个sequence名称和初始值,以及自增幅度 添加一个名为TestSeq 的自增序列
SELECT SETVAL('TestSeq', 10);
---设置指定sequence的初始值 这里设置TestSeq 的初始值为10
SELECT CURRVAL('TestSeq');
--查询指定sequence的当前值 这里是获取TestSeq当前值
SELECT NEXTVAL('TestSeq');
--查询指定sequence的下一个值 这里是获取TestSeq下一个值
标签:name,TestSeq,sequence,SQL,value,oracle,mysql,序列,seq
来源: https://www.cnblogs.com/internHe/p/12951259.html
mysql实现类似oracle的序列,mysql 创建[序列],功能类似于oracle的序列相关推荐
- 创建达梦到Oracle的DBLINK(OCI方式)
应用场景: 因业务需求:oracle作为目地端,DM作为使用端,需要在达梦里创建到oracle的dblink连接.以下为实操记录.推荐达梦DBLINK使用Oralce OCI的方式去访问Oracle数 ...
- MySQL实现类似Oracle的序列
MySQL实现类似Oracle的序列 2013-10-22 10:33:35 我来说两句 作者:走过的足迹 收藏 我要投稿 MySQL实现类似Oracle的序列 Oracle ...
- mysql 类似oracle,mysql – 制作类似于Oracle的seqences的机制
MySQL提供了一种增加记录ID的自动机制.这可以用于许多目的,但我需要能够使用ORACLE提供的序列.显然,为此目的创建表是没有意义的. 解决方案应该很简单: 1)创建一个表来托管所有需要的序列, ...
- Oracle 迁移至Mysql
**吴海存,**10g / 11g / 12c OCM,Oracle Exadata / Golden Gate专家,曾于Amazon和Oracle公司担任全球业务资深DBA,目前供职于中国农业银行, ...
- sqlinesdata教程_如何将Oracle数据导入MySQL
Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等 Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量.增量 ...
- oracle迁移到mysql工具_oracle数据库想迁移到mysql上 有什么方法或者工具吗
Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等 Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量.增量 ...
- oracle变mysql,Oracle变换成为Mysql注意事项
做项目的时候发现当要将Oracle数据库转换为Mysql需要将SQL语句中二者不兼容的方面需要修改 下面列出自己总结的注意事项: 1.日期格式的转换: Oracle Mysql 注意事项 to_cha ...
- mysql sql 设置主键自动增长_Mysql,SqlServer,Oracle主键自动增长的设置
在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE
免费数据库(SQLite.Berkeley DB.PostgreSQL.MySQL.Firebird.mSQL.MSDE.DB2 Express-C.Oracle XE 2009-02-16 11:2 ...
最新文章
- 牛客网里刷题:JS获取输入的数组
- RocketMQ命令整理
- NGUI的异步场景加载进度条
- 关键词 global 和 nonlocal
- 作业帮、猿题库们烧了千亿争市场,家长陷入选择焦虑
- 四管前级怎么去掉高低音音调_TDG Audio达芬奇:什么是前级,后极?
- Windows 中进程的相关操作
- task2:opencv的python接口图像储存、色彩空间、
- UOJ #297. 一样远
- 假如你学过高数,那你这一辈子都不会忘记这个人
- Inception(Pytorch实现)
- 使用Movavi Photo Editor如何修复照片中的红眼
- MySQL之字符串拼接
- IMU噪声参数辨识-艾伦方差
- SpringBoot整合freemarker模板导出word文件
- Linux性能测试(UnixBench)(bench)一键脚本
- Maven历史版本下载
- BWA处理WES文件
- 浅谈umi router
- 开源社区Github在2022年06月09日公测了三个新的成就徽章
热门文章
- pyqt5动态显示当前时间
- 隐马尔科夫模型 概念(上)
- java枚举可以int值不_java – 如何通过int值迭代枚举?
- FGPM:文本对抗样本生成新方法
- ACL 2020 | 基于机器阅读理解框架的命名实体识别方法
- 线下课程推荐 | 知识图谱理论与实战:构建行业知识图谱 (第四期)
- 活动 | INTERFACE#4 解读搜狗机器翻译技术,体验搜狗旅行翻译宝产品
- 数字图像处理与Python实现笔记之频域滤波
- java出现errors是什么错误_java中错误(error)和异常(exception)有什么主要区别?
- thymeleaf模板引擎