`
ahua186186
  • 浏览: 562035 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql 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;


-- INSERT INTO sequence VALUES ('MovieSeq',3,5);

-- 获取当前值
DROP FUNCTION IF EXISTS currval;
DELIMITER $
CREATE FUNCTION currval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
  DECLARE value INTEGER;
  SET value = 0;
  SELECT current_value INTO value
  FROM sequence
  WHERE name = seq_name;
  RETURN value;
END$
DELIMITER ;


-- 获取下一个值
DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
   UPDATE sequence
   SET          current_value = current_value + increment
   WHERE name = seq_name;
   RETURN currval(seq_name);
END$
DELIMITER ;

-- 设置值
DROP FUNCTION IF EXISTS setval;
DELIMITER $
CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)
RETURNS INTEGER
CONTAINS SQL
BEGIN
   UPDATE sequence
   SET          current_value = value
   WHERE name = seq_name;
   RETURN currval(seq_name);
END$
DELIMITER ;
分享到:
评论

相关推荐

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

    在MySQL中,自增序列(Sequence)是一种常用于生成唯一标识符的数据结构,尤其是在Oracle数据库中广泛使用。然而,MySQL自身并不直接支持Sequence,但可以通过创建表和存储过程来模拟这个功能。本教程将详细解释如何...

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

    这个名为"mysql-sequence"的库专门设计用于在MySQL数据库中创建和管理序列,它可以帮助开发者避免使用自增ID或其他复杂方法来生成唯一的序列号。在JavaScript环境中,这样的工具能够简化数据库操作,提高代码的...

    基于Mysql的Sequence实现方法

    在MySQL中,Oracle数据库中的Sequence概念可以通过自定义的方式进行模拟,因为MySQL本身并不直接支持Sequence。Sequence主要用于生成连续的整数序列,常用于主键生成或其他需要唯一标识的场景。以下是一个基于MySQL...

    mysql实现sequence功能的代码

    MySQL自身并不直接支持Sequence功能,但可以通过自定义的方式模拟这一功能。这里我们将详细介绍如何在MySQL中实现类似Oracle或PostgreSQL中的Sequence效果。 1. **建立Sequence记录表** 首先,我们需要创建一个名...

    mysql中实现sequence.pdf

    在MySQL中,序列(Sequence)通常用于生成唯一的标识符,特别是在那些没有内置序列支持的数据库系统中,如MySQL。在Oracle或PostgreSQL等其他数据库中,我们可以直接创建序列对象,但在MySQL中,我们需要采取一些...

    mysql-sequence-ts:MySQL序列同步查询

    /// <reference path='./node_modules/mysql-sequence-ts/mysql-sequence-ts.d.ts'> 安装 npm i mysql-sequence-ts 生成库文档 npm run-script generate-docs #未来 1. Fix docblock in current files and ...

    mysql-oracle数据同步

    在MySQL中,我们通常使用`AUTO_INCREMENT`属性来定义自增主键,而在Oracle中,可使用`SEQUENCE`对象来生成序列号。在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值...

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

    MySQL 雪花算法生成唯一整型ID主键的实现主要针对大数据环境下,需要大量生成全局唯一ID的需求。雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性...

    Oracle Sql语句转换成Mysql Sql语句

    6. **序列**:Oracle使用序列(SEQUENCE)来生成唯一ID,MySQL则常使用自增(AUTO_INCREMENT)字段。 7. **视图和存储过程**:Oracle的视图和存储过程可能需要在MySQL中重新编写,因为两者的语法和权限管理不同。 ...

    MySQL的PPT文档

    - **自动增长数据类型处理**:MySQL支持自动增长的数据类型,如`AUTO_INCREMENT`,而Oracle中则需要使用序列(sequence)来实现类似功能。 - **单引号处理**:MySQL中可以使用单引号来表示字符串,但在Oracle中使用单...

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

    在MySQL中,定义一个存储过程如`GET_NEXT_SEQUENCE`,它会查询`sequence`表的最新`id`并增加1。 5. **Java调用存储过程**: - 使用`CallableStatement`对象,你可以调用MySQL的存储过程。设置参数和获取结果集,...

    db2迁移到mysql.docx

    DB2中的序列(sequence)在MySQL中没有直接等价物。通常,可以使用MySQL的自增(auto-increment)特性来模拟序列。但对于复杂的序列逻辑,如获取当前值或下一个值,需要编写自定义函数来实现。 ##### 5.1 获取当前值 ```...

    mysql currval 和 nextval 函数的实现.txt

    ### MySQL中的currval和nextval函数实现解析 #### 背景介绍 在数据库系统中,序列(Sequence)是一种常用的数据结构,它主要用于生成一系列连续的整数,这些整数通常用于自动生成主键或其他唯一标识符。MySQL本身并...

    mysql 断电不能启动

    - **日志恢复进度**:“Doing recovery: scanned up to log sequence number 9219763629”,日志恢复正在进行中。 - **未提交事务回滚**:“Rolling back trx with id 275035944, 0 rows to undo”,这里记录了一...

    identity:用于MySql数据库

    综上所述,不同的数据库系统提供了多种主键生成策略,包括MySQL的`auto_increment`、Oracle的`sequence`以及Hibernate框架中的`native`、`hilo`等。选择哪种策略取决于具体的应用需求和数据库特性。理解这些策略的...

    mysql游标详解

    MySQL 游标详解 MySQL 从 5.0 版本开始支持存储过程和触发器,而游标在递归树结构中非常有用。游标是 MySQL 中的一种机制,允许开发人员在存储过程和触发器中控制数据的获取和处理。 在 MySQL 中,游标是通过 ...

Global site tag (gtag.js) - Google Analytics