`

mysql创建序列的方法

阅读更多
如果你不想使用mysql的自动递增,但又想实现主键序列号的功能,可以使用下面的方法,通过函数用一张表去维护生成多个表的序列号,简单又实用
    
1.创建生成多个表的序列号的数据维护表
CREATE TABLE seq (
  name varchar(20) NOT NULL,
  val int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8

2.插入几条初始化数据
INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);

3.创建函数以生成序列号
CREATE FUNCTION seq(seq_name char (20)) returns int
begin
UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;
RETURN last_insert_id();
end

4.测试
mysql> SELECT seq('one'),seq('two'),seq('one'),seq('one');
+------------+------------+------------+------------+
| seq('one') | seq('two') | seq('one') | seq('one') |
+------------+------------+------------+------------+
|        102 |       1002 |        103 |        104 |
+------------+------------+------------+------------+
1 row IN SET (0.00 sec)
分享到:
评论

相关推荐

    Mysql(序列/ID)生成方案

    这个SQL脚本通常会包含创建序列的表结构以及相关的操作,例如插入、更新或获取下一个ID。常见的方法是使用自增主键,但这种做法在高并发环境下可能会遇到问题,如ID的生成速度无法满足需求或者出现主键冲突。 一种...

    java通过Mysql实现类似oracle序列功能序列.rar

    在Oracle数据库中,序列是一种非常重要的工具,它用于生成唯一的整数序列,通常用作主键。...请注意,这种方法可能不如Oracle的序列功能那么高效,但在没有内置序列功能的MySQL中,这是一种可行的解决方案。

    在MySQL中创建实现自增的序列(Sequence)的教程

    本教程将详细解释如何在MySQL中创建自增序列,并通过两个实例展示其用法。 首先,我们需要创建一个名为`sequence`的管理表,用于存储序列的名称、当前值和增量。创建表的SQL语句如下: ```sql DROP TABLE IF ...

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

    3. **实现deserialize方法**:在这个方法中,我们将处理从MySQL数据库捕获到的SourceRecord。首先获取主题信息,从中提取出数据库和表名。然后,我们从Value中提取数据本身,将其转换为JSON格式。无论是删除还是修改...

    mysql生成oracle序列

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

    MySQL 序列 AUTO_INCREMENT详解及实例代码

    MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长。 mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT

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

    在使用Flink API时,我们需要创建一个`SourceFunction`,通过`FlinkJDBCInputFormat`或`DebeziumDeserializationSchema`来读取MySQL的变化。`FlinkJDBCInputFormat`通常用于全量数据加载,而`...

    mysql自定义序列

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

    mysql实现自动创建与删除分区

    本文将深入探讨如何实现MySQL的自动创建与删除分区,主要关注时间分区,并介绍相关存储过程和事件的设置。 首先,我们需要理解MySQL分区的概念。分区是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区...

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

    首先,我们需要创建一个名为`sequence`的表来存储序列信息。这个表有四个字段:`name`用于存储序列名称,`current_value`记录当前序列值,`increment`表示每次递增的值,默认为1,`PRIMARY KEY`确保每个序列名称的...

    MySQL 序列使用

    MySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。 实例 以下实例中创建了数据表 insect, insect 表中 id 无需指定值可实现自动增长。 mysql> CREATE TABLE insect -> ( -> id INT ...

    oracle迁移mysql自增序列问题

    在描述中,我们看到一个具体的例子,首先创建了一个名为`test`的MySQL表,包含两个字段:`id`(无符号整型,非空,主键)和`username`(可变长度字符串)。接着,填充了一些预设的数据,并尝试将`id`字段改为自动...

    MySQL生成Oracle序列参考案例

    通过上述方法,即使MySQL原生不支持序列对象,我们也能够通过一些创造性的解决方案来实现类似Oracle的序列功能。这个案例不仅展示了数据库迁移时的技巧,同时也提供了使用MySQL进行高级数据库操作的例证,对于希望在...

    小白看得懂的MySQL JDBC 反序列化漏洞分析 - 先知社区1

    在MySQL JDBC 8.0.12中,`ResultSetImpl.getObject()`方法在特定条件下可能会触发这个行为。攻击者可以通过构造恶意的序列化对象并将其作为查询结果返回,利用驱动的反序列化过程执行任意代码。 关键点在于找到可以...

    mysql-8.0.21-winx64

    7. **管理数据库**:在MySQL客户端,你可以创建数据库、用户、表,并进行数据的插入、查询、更新和删除操作。SQL语句是与MySQL交互的主要方式,如`CREATE DATABASE`, `USE`, `CREATE TABLE`, `INSERT INTO`, `SELECT...

    mysql-sequence:nodejs的mysql序列生成器

    1. **创建序列**:你可以通过调用特定的方法,为数据库中的表创建一个新的序列。这将确保每次插入新记录时都能得到一个唯一的ID。 2. **获取下一个值**:在插入新记录前,可以先获取序列的下一个值,然后将其设置为...

    mysql-oracle数据同步

    2. 在Oracle中创建与MySQL主键类型匹配的列和序列。 3. 编写脚本或程序,读取MySQL数据,根据MySQL的主键值生成Oracle的序列号。 4. 插入数据到Oracle,并确保主键值的连续性。 总的来说,MySQL到Oracle的数据同步...

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

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

Global site tag (gtag.js) - Google Analytics