`
ahua186186
  • 浏览: 555050 次
  • 性别: 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)的教程,分别列举了两个实例并简单讨论了一些限制因素,需要的朋友可以参考下

    基于Mysql的Sequence实现方法

    新的业务全部使用新的框架,甚至是新的数据库–Mysql。 这边之前一直是使用oracle,各种订单号、流水号、批次号啥的,都是直接使用oracle的sequence提供的数字序列号。现在数据库更换成Mysql了,显然以前的老方法不...

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

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

    mysql中实现sequence.pdf

    mysql中实现sequence.pdf

    mysql实现sequence功能的代码

    mysql实现sequence功能 1.建立sequence记录表 CREATE TABLE `sys_sequence` ( `seq_name` varchar(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `min_value` int(11) NOT NULL, `max_value` int(11)...

    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+Cookbook.

    The new edition covers MySQL 5.0 and its powerful new ... Generate sequence numbers to use as unique row identifiers  Create database events that execute according to a schedule  And a lot more

    MySQL实现类似Oracle序列的方案

    Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...

    根据mysql数据的一个字段数据修改另一个字段的数据

    要求:查询一个字段的数据,将每个数据拆分,取第一个字符,将第一个字符遍历出来,替换到另一个字段里面

    oracle迁移mysql自增序列问题

    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...

    mysql 断电不能启动

    处理一下出现的日志 Plugin 'FEDERATED' is disabled. 2017-11-15 19:23:46 16c0 InnoDB: Warning: Using innodb_additional_mem_pool_size ...Version: '5.6.21' socket: '' port: 3306 MySQL Community Server (GPL)

    MySQL Admin Cookbook

    Book Description 99 great recipes for mastering MySQL ... * Part of Packt's Cookbook series: Each recipe is a carefully organized sequence of instructions to complete the task as efficiently as possible

    Oracle、DB2、PostgreSQL之Sequence总结

    Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何...比如Oracle、DB2、PostgreSQL数据库有Sequence,MySQL、SQL Server、Sybase等数据库没有Sequence。

    Oracle与Mysql自动增长列(id)的区别

    Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  ...

    Mysql的游标的定义使用及关闭深入分析

    关于游标的用法Mysql现在提供的还很特别,虽然使用起来没有PL/SQL那么顺手,不过使用上大致上还是一样, 定义游标 declare fetchSeqCursor cursor for select seqname, value from sys_sequence; 使用游标 open ...

    MySQL分表自增ID问题的解决方法

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中。   应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便。  在postgreSQL、oracle、db2...

    MySQL自增列插入0值的解决方案

    在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值。在MSSQL中是这样完成的: 代码如下: string sql;sql = ” set identity_insert dbo.AppUsers on ” + ” insert dbo....

Global site tag (gtag.js) - Google Analytics