在MySQL中创建实现自增的序列

上传人:m**** 文档编号:47533606 上传时间:2018-07-02 格式:DOCX 页数:4 大小:24.25KB
返回 下载 相关 举报
在MySQL中创建实现自增的序列_第1页
第1页 / 共4页
在MySQL中创建实现自增的序列_第2页
第2页 / 共4页
在MySQL中创建实现自增的序列_第3页
第3页 / 共4页
在MySQL中创建实现自增的序列_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《在MySQL中创建实现自增的序列》由会员分享,可在线阅读,更多相关《在MySQL中创建实现自增的序列(4页珍藏版)》请在金锄头文库上搜索。

1、在在 MySQLMySQL 中创建实现自增的序列(中创建实现自增的序列(SequenceSequence)的方法教程)的方法教程由于我们业务的需要,我们以前数据的使用 item_id MD5+time 的生成方式太过冗余,我们考虑使用数字来表示,如果使用时间戳,可能会有重复的情况,我们觉得还不是那么的好,所以想到了利用一个独立的自增的 sequence 来解决该问题。由于 mysql 和oracle 不太一样,不支持直接的 sequence,所以需要创建一张 table 来模拟 sequence 的功能:首先:首先:我们要创建-Sequence 管理表? 1 2 3 4 5 6 7DROP T

2、ABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(30) NOT NULL, current_value INT NOT NULL, increment INT NOT NULL DEFAULT 1, PRIMARY KEY (name) ) ENGINE=InnoDB; 388 棋牌 http:/其次我们要创建几个函数用以实现对表的操作:其次我们要创建几个函数用以实现对表的操作:1 1 创建创建-取当前值的函数取当前值的函数? 1 2 3 4 5 6 7 8 9 10 11 12 13DROP FUNCTION IF

3、EXISTS currval; DELIMITER $ CREATE FUNCTION currval (seq_name VARCHAR(30) RETURNS INTEGERLANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT BEGINDECLARE value INTEGER; SET value = 0; SELECT current_value INTO value 14 15 16 17 18 19FROM sequenceWHERE name = seq_name; RETURN value;

4、END $ DELIMITER ;2 2 创建创建-取下一个值的函数取下一个值的函数? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17DROP FUNCTION IF EXISTS nextval; DELIMITER $ CREATE FUNCTION nextval (seq_name VARCHAR(50) RETURNS INTEGERLANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT BEGINUPDATE sequenceSET current_value =

5、current_value + increment WHERE name = seq_name; RETURN currval(seq_name); END $ DELIMITER ; 捕鱼游戏 http:/3 3 创建创建-更新当前值的函数更新当前值的函数? 1 2 3 4 5 6 7 8 9 10 11 12 13DROP FUNCTION IF EXISTS setval; DELIMITER $ CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) RETURNS INTEGERLANGUAGE SQL DETERMI

6、NISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT BEGINUPDATE sequenceSET current_value = value WHERE name = seq_name; 14 15 16 17RETURN currval(seq_name); END $ DELIMITER ;(注:关于(注:关于 DELIMITER;DELIMITER;可以点击这里)可以点击这里)最后:最后:我们要用以下数据设置 创建的 sequence 名称 以及设置初始值和获取当前值和下一个值。? 1 2 3 4INSERT INTO sequence V

7、ALUES (item_id, 0, 1); #插入一条数据,添加一个 sequence 名称和初始值,以及自增幅度 SELECT SETVAL(item_id, 10); #设置指定 sequence 的初 始值 SELECT CURRVAL(item_id); #查询指定 sequence 的当 前值 SELECT NEXTVAL(item_id); #查询指定 sequence 的下 一个值最最后最最后 就是我们使用就是我们使用 pythonpython 去调用去调用? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17import pymysql# 打开

8、数据库连接(ip/数据库用户名/登录密码/数据库名)db = pymysql.connect(“localhost“, “root“, “xxxx“, “xxxxx“) # 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor() # 使用 execute() 方法执行 SQL 查询cursor.execute(“SELECT NEXTVAL(item_id);“) # 使用 fetchone() 方法获取单条数据.data = cursor.fetchone() mit() print(“Database version : %s “ % data) print(type(data) # 这里返回的是一个 tuple 类型 num = list(data)0 # 如果我们想需要 其他类型 可以直接转换一下 或者 l ist 或者 strprint(num)18 19print(type(num) # 这里取了一个 int 类型# 关闭数据库连接 棋牌评测网 http:/db.close()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 数据库

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号