`
Surmounting
  • 浏览: 67829 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL 简易序列

阅读更多

然后,可以在数据库中写入序列求新值的存储程序(函数)本文我也发表在过:http://blog.csdn.net/shanelooli/article/details/7785681

代码分享在:http://my.csdn.net/my/code/detail/12581

http://surmounting.iteye.com/code


这是为 MySQL 编写的简易序列存储程序(一个函数)。
考虑到 update 自身的行锁能力。所以本序列程序具有很强的并发提供能力。

首先,需要预先准备序列表

DROP TABLE IF EXISTS Sequence;    
CREATE TABLE Sequence    
(    
  name      VARCHAR(32),    
  maxIndex  INTEGER,    
  CONSTRAINT cst_Sequence_pk PRIMARY KEY (name, maxIndex)    
) DEFAULT CHARACTER SET utf8    
ENGINE InnoDB;

 
然后,可以在数据库中写入序列求新值的存储程序(函数)

SET GLOBAL log_bin_trust_function_creators = 1;    
DROP FUNCTION IF EXISTS nextval;    
DELIMITER //    
CREATE FUNCTION nextval(sequenceName VARCHAR(32))    
  RETURNS INTEGER    
  NOT DETERMINISTIC    
  CONTAINS SQL    
/* ********** ********** ********** **********    
This is a common sequence function. It is based on table Sequence.    
This function will return new integer by given sequence name.    
author:     Shane Loo Li    
version:    1.1.1, 2012-7-17 Tuesday    Modified edition.    
history:    
1.1.0, 2012-7-14 Saturday   Shane Loo Li    New    
1.1.1, 2012-7-17 Tuesday    Shane Loo Li    Modified wrong column name.    
********** ********** ********** ********** */    
BEGIN    
    
  DECLARE iMaxIndex INTEGER;    
    
  UPDATE Sequence SET maxIndex = maxIndex + 1 WHERE name = sequenceName;    
  SELECT maxIndex INTO iMaxIndex    
    FROM Sequence WHERE name = sequenceName;    
    
  RETURN iMaxIndex;    
    
END    
//    
DELIMITER ;

 
在使用队列之前,应通过给 Sequence 表增加记录的方式,初始化新的序列。

INSERT INTO Sequence ('name...', 0);

 
之后,就可以通过 nextval('name...') 函数来取得名为 name... 的序列新值。

 

 

 

分享到:
评论

相关推荐

    基于java和mysql的简易图书管理系统.zip

    《基于Java和MySQL的简易图书管理系统》 在IT领域,开发一个图书管理系统是常见的实践项目,它可以帮助初学者深入理解编程语言、数据库管理和数据交互等关键概念。本项目以Java和MySQL为基础,构建了一个简易的图书...

    中国象棋(简易版)(java se+mysql)

    【中国象棋(简易版)】是一个基于Java SE和MySQL开发的在线双人对战游戏。这个项目的主要目的是通过网络编程技术,使两个玩家能够通过同一个服务器进行实时的棋局互动。下面将详细阐述其中涉及的技术点和实现原理。...

    Java Socket+mysql实现简易文件上传器的代码

    在本项目中,我们利用Java Socket编程和MySQL数据库来实现一个简易的文件上传器。这个文件上传器允许客户端用户登录并上传本地文件到服务器的数据库。以下是对该项目关键知识点的详细解释: 1. **Java Socket通信**...

    简易聊天室.zip

    综上所述,"简易聊天室"项目是一个综合性的实践,它结合了Java GUI编程、网络通信、多线程处理、数据序列化、用户认证等多方面的知识。开发者通过这个项目可以提升对这些技术的理解和应用能力。

    使用C++编程语言基于muduo网络库思想实现的简易聊天服务器.zip

    使用C++编程语言基于muduo网络库思想实现的简易聊天服务器项目概述使用C++编程语言基于muduo网络库实现的简易聊天服务器,实现了用户注册、登录,添加好友, 创建群组, 一对一聊天,群聊, 接收离线消息等功能 。...

    简易版qq源代码

    【简易版qq源代码】项目是一个基于Java编程语言实现的简单即时通讯软件,它采用了客户端-服务器(Client-Server)架构,旨在模仿QQ的基本功能,包括自动回复、表情发送和聊天等。在这个项目中,我们可以深入学习到...

    自己动手写数据库-基于Java语言的简易关系型数据库.zip

    自己动手写数据库--基于Java语言的简易关系型数据库关系型DB从0到1——基于Java语言的简易数据库本项目旨在练习实现一个基于Java语言的简易关系型数据库,用于学习关系型数据库(如Mysql)的设计思想、核心重构、...

    简易聊天室

    虽然描述中没有提到数据库,但为了存储用户信息或聊天历史,开发者可能会选择集成SQLite、MySQL等数据库。这将涉及数据的CRUD操作,以及数据库连接和查询语句的编写。 10. **错误处理和日志记录**: 任何应用程序...

    简易山寨QQ(MyQQ)

    7. **数据库管理**:为了存储用户信息、好友关系和聊天记录,MyQQ可能使用了SQLite这样的轻量级数据库,或者与MySQL等更强大的数据库系统集成。 8. **GUI编程**:用户界面是QQ的核心部分,MyQQ的开发者可能使用了如...

    MysqlBlobToJsonTool:将数据库的blob数据转成json并显示出来(采用angular4生成,支持输入mysql账号密码连接,支持选择数据库,支持选表并展示数据)

    一开发此工具的缘由由于本人在游戏公司做java游戏服务端protosbuf ,使用的是MySQL数据库,采用protosbuf序列化之后存入数据库,玩家上线的时候读取数据然后反序列化。因此造成了一个问题,因为数据都是二进制的,...

    精选_基于Java的简易聊天软件_源码打包

    4. **数据序列化与反序列化**:在Java中,可能使用ObjectInputStream和ObjectOutputStream进行对象的序列化和反序列化,以便在网络中传输复杂的数据结构。 5. **GUI编程**:Java的Swing或JavaFX库可用于创建用户...

    简易微信客户端和服务器源码.7z

    4. **数据序列化与反序列化**:在客户端与服务器之间传输的数据通常需要进行序列化,即将对象转化为字节流以便在网络中传输,到达目的地后再进行反序列化恢复为原对象。JSON或XML可能是常用的数据交换格式。 5. **...

    毕业设计:基于PHP简易中文分词系统.zip

    4. **MySQL**: MySQL是一种关系型数据库管理系统,用于存储和管理项目中的数据。在这个毕设中,可能用于存储词典、分词结果或者用户相关的数据。 5. **数据库设计与操作**: 需要了解如何设计合理的数据库表结构,以...

    计算机网络Socket编程大作业实现了一个基于局域网通信的简易微信。使用到的技术有Java的Socket编程,数据库.zip

    可能使用的是关系型数据库如MySQL,通过JDBC(Java Database Connectivity)接口与Java程序进行交互。数据库设计可能包括用户表、好友关系表、聊天记录表等,确保数据的持久化存储和高效查询。 5. **多线程**: ...

    简易版人员管理

    在实际的项目中,人们可能会选择使用更高级的数据存储解决方案,如关系型数据库(如SQL Server、MySQL)或NoSQL数据库(如MongoDB),这些数据库系统提供了更强大的查询语言、事务支持和并发控制。然而,对于教学或...

    WEB简易聊天源码

    6. **数据库管理**:用户信息、聊天记录等数据通常会存储在数据库中,可能是MySQL、SQLite或其他关系型数据库。数据库操作如CRUD(创建、读取、更新、删除)是必不可少的。 7. **前端技术**:前端部分可能采用了...

    学生时期的简易版图书管理系统

    这通常涉及文件的读写操作,如使用pickle模块在Python中序列化和反序列化对象,或采用CSV格式存储结构化数据。 六、版本控制与代码组织 对于初学者来说,使用版本控制系统(如Git)对代码进行版本控制是非常重要的...

    简易供应商管理工具附源码

    在数据库方面,可能使用MySQL、PostgreSQL或SQLite等来存储供应商信息、订单数据等。数据库设计是关键,需确保表结构合理,支持高效查询,例如,供应商表可能包括供应商ID、名称、联系方式、评级等字段,订单表则...

    简易的山寨版javaQQ系统

    【简易的山寨版javaQQ系统】是一个基于Java编程语言实现的简单即时通讯软件,它旨在模仿QQ的基本功能,为用户提供一个基础的聊天平台。在这个项目中,我们可以学习到Java编程在构建网络通信应用中的基本原理和技巧。...

    简易图书管理系统JAVA实现

    例如,使用FileReader和FileWriter进行文本文件操作,或者使用ObjectInputStream和ObjectOutputStream进行对象序列化和反序列化。 7. **集合框架**:在JAVA中,集合框架如ArrayList、LinkedList、HashMap等,可以...

Global site tag (gtag.js) - Google Analytics