`
1028826685
  • 浏览: 939102 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Mysql创建自定义序列

阅读更多

/*创建序列方法*/

set global log_bin_trust_function_creators=TRUE;
DROP FUNCTION IF EXISTS _nextval;
create function _nextval(
 in_nextname varchar(255)
)
RETURNS VARCHAR(255)
begin 
declare _cur int;
declare _max_value int;
declare _min_value int;

set _cur=(select current_value from t_sequence where name= in_nextname);
set _max_value=(select max_value from t_sequence where name= in_nextname); 
set _min_value=(select min_value from t_sequence where name= in_nextname); 

if _cur > _max_value  then
 set _cur=_min_value;
end if;

update t_sequence 
 set current_value = _cur + _increment 
 where name=in_nextname; 
return _cur; 

end

/*mysql*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `t_sequence`
-- ----------------------------
DROP TABLE IF EXISTS `t_sequence`;
CREATE TABLE `t_sequence` (
  `name` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '',
  `current_value` bigint(11) DEFAULT NULL,
  `_increment` int(11) DEFAULT NULL,
  `max_value` bigint(11) DEFAULT NULL,
  `min_value` bigint(11) DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of t_sequence
-- ----------------------------
INSERT INTO `t_sequence` VALUES ('SEQ_COMMODITY_CODE', '1000', '1', '9999', '1000');
INSERT INTO `t_sequence` VALUES ('SEQ_DEPARTMENT', '20', '1', '999', '20');
INSERT INTO `t_sequence` VALUES ('SEQ_USER_ORDER_CODE', '1000000', '1', '9999999', '1000000');
INSERT INTO `t_sequence` VALUES ('SYSUSER_INCREMENT', '1001', '1', '9999', '1001');
-- ----------------------------
-- Records of t_sequence
-- ----------------------------

分享到:
评论

相关推荐

    flinkcdc-mysql自定义反序列化器.pdf

    Flink CDC MySQL 自定义反序列化器 Flink CDC(Change Data Capture)是一种实时数据integration解决方案,能够捕捉数据库的变化,并将其发送到下游系统。为了实现Flink CDC与MySQL的集成,需要自定义反序列化器,...

    mysql自定义序列

    用mysql创建的一个自定义序列,主要用来处理一些需要自定义编号的情况,然后每天这个自定义编号又得重新算起

    Flinkcdc监测mysql数据库,自定义反序列化,利用flinkApi和flinkSql两种方式

    在这个场景下,我们将深入探讨如何使用Flink CDC来监测MySQL数据库,并且实现自定义反序列化,以及如何通过Flink API和Flink SQL两种方式进行数据处理。 首先,让我们理解什么是CDC。CDC是一种数据库复制技术,它...

    mysql生成oracle序列

    为了在MySQL中实现类似于Oracle序列的功能,可以通过创建一张特殊的表和几个自定义函数来实现。这种方法可以有效地模拟Oracle序列的行为,并能够根据指定的步长和长度来生成数值。 ##### 2.1 创建模拟序列的表 在...

    MySQL生成Oracle序列参考案例

    由于MySQL本身并不直接支持序列对象,因此需要借助自定义表和函数来模拟序列的行为。本文档提供了一个详细的迁移案例,以及相关的SQL脚本,使得在MySQL中可以实现与Oracle序列相似的功能。 首先,文档介绍了一个名...

    mysql雪花算法生成唯一整型ID主键的实现方法

    在MySQL中实现雪花算法,主要是通过自定义函数来模拟这个过程。 首先,我们需要创建一个名为`sequence`的表来存储序列信息。这个表有四个字段:`name`用于存储序列名称,`current_value`记录当前序列值,`increment...

    S23-MySQL-JDBC反序列化1

    为了复现此漏洞,攻击者需要创建一个可以控制的MySQL服务器,然后构造一个包含恶意payload的JDBC连接。一旦客户端连接并执行查询,恶意payload将被执行,从而可能触发远程代码执行。 复现步骤大致如下: 1. 准备一...

    MySQL实现类似Oracle序列的方案

    这样,我们就可以像使用Oracle序列一样在MySQL中操作这些自定义序列了。例如,如果要创建一个名为`MovieSeq`的序列,并设置其初始值为100,可以执行以下操作: ```sql INSERT INTO sequence (seq_name, current_val...

    mysql_序列表_02

    在本文中,我们探讨了如何使用MySQL数据库管理系统来创建一个序列表,并利用触发器自动为新插入的记录生成序列号。这个操作涉及到几个重要的知识点:创建表、设置触发器以及数据插入。 首先,我们来看如何创建一个...

    利用mysql实现的雪花算法案例

    例如,MySQL通过`autoincrement`实现自增,Oracle则使用序列。但这些方法在分表后不再适用,因此需要寻找新的解决方案。 2. 解决方案对比 - 数据库表维护:在特定数据库中维护一个自增ID表,每次需要ID时加锁更新,...

    C++ mysql查询 C++17编写 可以自动序列化到定义的结构体,支持json类型

    本项目利用C++17的特性实现了MySQL查询,并且能够将查询结果自动序列化到预先定义的结构体,同时还支持JSON类型的数据处理。 首先,让我们深入理解C++与MySQL的交互。MySQL Connector/C++是MySQL官方提供的C++接口...

    C/C++结构体序列化配置模板化

    在C/C++中,由于没有内置的序列化支持,开发者通常需要自定义实现。本主题探讨的是如何利用C++的模板机制来实现结构体的序列化配置,以提高代码的可复用性和灵活性。 首先,我们需要理解C++的模板。模板是C++中的一...

    InstallShield打包MySQL

    InstallShield允许开发者创建自定义的动作脚本,这些脚本可以在安装过程的不同阶段执行。对于MySQL的打包,我们需要创建一个批处理脚本来处理MySQL的安装、配置以及服务的启动和停止。 1. **创建批处理脚本**: 在...

    14.Oracle自定义函数1

    一、创建自定义函数 1. 创建函数的基本语法如下: ```sql CREATE OR REPLACE FUNCTION 函数名( 参数1 模式 数据类型, ... ) RETURN 数据类型 AS -- 定义局部变量 变量1 数据类型; ... BEGIN -- 实现函数功能的 ...

    unity连接mysql工具包

    2. **数据持久化**:考虑使用Unity的PlayerPrefs或自定义序列化机制,将与数据库交互的结果缓存到本地,以减少网络延迟。 3. **异步操作**:由于数据库操作可能耗时较长,应使用Unity的协程或者UnityWebRequest异步...

    sql获得自动增加字段的下一个编号,不是max(id)+1

    - **使用序列**:虽然MySQL本身没有内置的序列支持,但可以通过创建存储过程或者使用变量来模拟序列。 - **使用触发器**:可以在插入新记录前使用触发器预先计算下一个ID值。 ##### 3. PostgreSQL - 使用序列 ...

    mysql-5.7.26.tar.gz

    5. **初始化数据库**:安装完成后,需要初始化MySQL数据目录,创建root用户和其他必要设置,通常使用`scripts/mysql_install_db`脚本。 6. **设置权限和服务**:为确保安全,需要设置MySQL的启动脚本、系统服务以及...

    mysql-boost-5.7.30.tar.gz

    6. 设置权限和服务:为MySQL创建系统用户,配置启动脚本,使MySQL作为服务运行。 在安装过程中,可能会遇到各种问题,如依赖库缺失、编译错误或权限问题,这时候需要根据错误提示来解决。安装完成后,可以通过`...

    MySql+JsonNet开发工具包.zip

    3. **Json.NET的使用**:详述Json.NET的核心功能,如`JsonConvert`类的`SerializeObject`和`DeserializeObject`方法,以及如何自定义序列化和反序列化的行为。 4. **数据库连接**:展示如何使用ADO.NET或更现代的...

    MySql.Data.dll

    首先,为了在Unity项目中使用MySQL.Data.dll,你需要将这个库文件复制到项目的Assets目录下的Plugins文件夹内(如果不存在,需创建)。这样,Unity在构建时会自动包含这个库,并在运行时加载。 接下来,我们需要...

Global site tag (gtag.js) - Google Analytics