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

mysql实现oracle序列(sequence)的解决方案--自定义存储过程

 
阅读更多
转自:http://g.kehou.com/t1018529793.html
MySQL自增长与Oracle序列的区别:
自增长只能用于表中的其中一个字段
自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.
自增长会把一个未指定或NULL值的字段自动填上.

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

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

Java代码 

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

在ORACLE是这样的:
Java代码 

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

Java代码 

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


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

分享到:
评论

相关推荐

    MySQL实现类似Oracle序列的方案

    本文记录了一个模拟Oracle序列的方案,重点是想法,代码其次。 Oracle序列的使用,无非是使用.nextval和.currval伪列,基本想法是: 1、MySQL中新建表,用于存储序列名称和值; 2、创建函数,用于获取序列表中的值;...

    oracle迁移mysql自增序列问题

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

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

    由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能,理由sql语句如下: 第一步:创建–Sequence 管理表 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( ...

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

    Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  create sequence test_sequence [increment by 1]–增长的步长 ...

    Oracle、DB2、PostgreSQL之Sequence总结

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

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

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    oracle 创建字段自增长实现方式

    mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。  因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 ...

    实现oracle数据库字段自增长(两种方式)

    程序猿都知道mysql等其他的数据库都有随着记录的插入而表ID会自动增长的功能,反而oracle却没有这一功能,下面通过两种方式来解决字段增长的功能,具体内容情况下文。 因为两种方式都需要通过创建序列来实现,这里先...

    两种oracle创建字段自增长的实现方式

    mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 CREATE ...

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

     在postgreSQL、oracle、db2数据库中有一个特殊的特性—sequence。 任何时候数据库可以根据当前表中的记录数大小和步长来获取到该表下一条记录数。然而,MySQL是没有这种序列对象的。  可以通过下面的方法来实现...

    单点登录源码

    - 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...

    StrutsNews

    2.本程序部分实现AJAX功能,采用DWR框架。 3.程序运行环境为MYECLIPSE 5.0 + TOMACT 5.5 + ORACLE 9i 4.配置说明:将lib目录下的commons-pool-1.2.jar,commons-dbcp-1.2.jar,ojdbc14.jar复制到TOMACT目录下的...

    【总结】数据库自增字段的 3 种实现方式

    在设计数据库的表结构时,经常会使用一个自动增长的数字序列作为主键字段(代理主键)。...序列(SEQUENCE) — :check_mark: :check_mark: :check_mark: — AUTO_INCREMENT :check_mark: — — SERIAL

    Hibernate注解

    * 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...

    sql 主键自增

    在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。 创建序列SEQ_ID,起始值为1,增量为1 create sequence SEQ_ID increment by 1 start with 1

    Java学习笔记-个人整理的

    {13.5.1}MySQL}{198}{subsection.13.5.1} {13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util.Date与java.sql.Date比较}{200}{...

Global site tag (gtag.js) - Google Analytics