`

MySQL---ORACLE序列解决方案

    博客分类:
  • JAVA
阅读更多
MySQL自增长与Oracle序列的区别:
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.

在mysql中添加序列,请看下面的实例:
在MYSQL里有这样一张表:


CREATE TABLE Movie(    
id            INT NOT NULL AUTO_INCREMENT,    
name      VARCHAR(60) NOT NULL,    
released YEAR NOT NULL,    
PRIMARY KEY (id)    
) ENGINE=InnoDB;   

CREATE TABLE Movie(
id           INT NOT NULL AUTO_INCREMENT,
name     VARCHAR(60) NOT NULL,
released YEAR NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;


INSERT INTO Movie (name,released) VALUES ('Gladiator',2000);    
INSERT INTO Movie (id,name,released) VALUES (NULL,'The Bourne Identity',1998);   



在ORACLE是这样的:


CREATE TABLE Movie(    
id           INT NOT NULL,    
name      VARCHAR2(60) NOT NULL,    
released INT NOT NULL,    
PRIMARY KEY (id)    
);    

CREATE SEQUENCE MovieSeq;

INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,'Gladiator',2000); 



在oracle下为表添加一个触发器,就可以实现mysql自增长功能:


CREATE OR REPLACE TRIGGER BRI_MOVIE_TRG    
BEFORE INSERT ON Movie    
FOR EACH ROW    
BEGIN    
   SELECT MovieSeq.NEXTVAL INTO :new.id FROM DUAL;    
END BRI_MOVIE_TRG;    
.    
RUN;   


INSERT INTO Movie (name,released) VALUES ('The Lion King',1994);   



这样,插件记录就可以成为MYSQL风格:


下面我们来看看如何在mysql数据里使用Oracle序列语法.NEXTVAL 和 .CURVAL.
我们假设在mysql中序列的语法是:


NEXTVAL(’sequence’);
CURRVAL(’sequence’);
SETVAL(’sequence’,value);


下面就是CURRRVAL的实现方案:


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 AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

INSERT INTO sequence VALUES ('PROPOSAL_NO',100000,1); 

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 ;  

demo: SELECT currval('PROPOSAL_NO'); 

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 ;  


demo :  select nextval('PROPOSAL_NO');     

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 ; 

demo: select setval('PROPOSAL_NO',150);      

分享到:
评论

相关推荐

    RhymeSearch 疯狂押韵 - 基于Django + Mysql 的中文押韵词语搜索网站.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    javaweb(jsp)-课程设计-图书购物网站,基于JSP(MVC模式)和MySQL的网上图书购物系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于 Vue+Vue-router+elementui +axios +nodejs+ mysql 的超市管理系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,体积比较庞大,占用许多系统资源, 但使用很方便,支持命令和图形化管理,收费。 中型企业 ...

    [零食商贩] - 基于vue全家桶 + koa2 + sequelize + mysql 搭建的移动商城应用.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于 nodejs express mysql 开发的留言板 demo.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于C#试题库管理系统(MySQL).zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于Java Swing + MySQL的图书管理系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    C++ Qt 基于数据库Mysql学生信息管理系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    Mycat-server-1.6-RELEASE源码

    支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster...

    基于Flask + MySQL的在线请假微信小程序.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于Jsp+Servlet+MySQL的会员管理系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于Java Swing + MySQL + JDBC 的图书管理系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于Java SpringBoot + mysql的在线图书展示商城。.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    Node、koa2、mysql 基于mpvue的网易严选商城.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于 jsp + servlet + mysql 三层架构实现的网上书店系统.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于MVC模式的简单购物车实验,JavaWeb作业。Servelet Mysql JSP .zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    koa+mysql+vue+iview 基于node前后端分离blog项目.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    基于 gin+gorm+redis+mysql 读写分离的电子商城.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

    C++程序设计实践项目——学生信息管理系统,基于Qt+MySQL.zip

    自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...

Global site tag (gtag.js) - Google Analytics