`
benjaminz
  • 浏览: 26837 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

在mysql中模拟oracle的sequence

阅读更多

为了在Mysql中实现类似于ORACLE的Sequence的功能,要进行以下步骤:


1、创建一个只有一个数据行的数据表:

 

create table t_sequence (id int unsigned not null);
insert into t_sequence values (0);
 

2、用以下操作检索出序列号:

 

update t_sequence set id = LAST_INSERT_ID( id + 1 );
select LAST_INSERT_ID(); 
 

 

注意此处无需带表名,直接SELECT这个函数即可。


通过修改id+1中的常数值,可生成不同步长的序列。如id+n可生成步长为n的序列。

通过LAST_INSERT_ID()函数获得的返回值模拟ORACLE中SELECT NEXTVAL类似的效果。该方法的优点是不用事务或LOCK,UNLOCK表就可生成唯一的序列编号。


因为LAST_INSERT_ID()是面向连接的,每个连接的用户取到的返回值不会重复,针对并发的连接该方法也是安全的。

0
3
分享到:
评论
2 楼 benjaminz 2010-11-10  
是的,就是模拟而已
1 楼 jeff06143132 2010-11-01  
但是这个应该只能模拟一个序列吧?

相关推荐

    java通过Mysql实现类似oracle序列功能序列.rar

    在MySQL中,定义一个存储过程如`GET_NEXT_SEQUENCE`,它会查询`sequence`表的最新`id`并增加1。 5. **Java调用存储过程**: - 使用`CallableStatement`对象,你可以调用MySQL的存储过程。设置参数和获取结果集,...

    MySQL实现类似Oracle序列的方案

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

    mysql生成oracle序列

    因此,在进行Oracle到MySQL的数据迁移时,需要采用特定的技术手段来模拟Oracle中的序列行为。 #### 二、MySQL中模拟Oracle序列的方法 为了在MySQL中实现类似于Oracle序列的功能,可以通过创建一张特殊的表和几个...

    mysql中实现sequence.pdf

    在MySQL中,如果你需要一个模拟序列的机制,可以创建一个名为`sequence`的表,初始插入一条记录,然后通过`UPDATE`语句和`LAST_INSERT_ID()`配合来递增这个ID。例如: ```sql CREATE TABLE sequence (id INT NOT ...

    MYSQL到ORACLE程序迁移的注意事项

    MySQL的`LIKE`操作在Oracle中同样可用,但可能无法利用索引,效率较低。若需高效模糊搜索,Oracle推荐使用`INSTR()`函数。 8. **资源管理**: 在Oracle中,操作完数据库后,记得释放结果集和游标。这有助于优化...

    MySQL生成Oracle序列参考案例

    首先,文档介绍了一个名为`sequence`的表结构,这个表是模拟Oracle序列的核心组件。在这个表中,我们存储了序列名、当前值、步长以及值的最大长度等信息。表中的字段及其作用如下: 1. `name`:相当于Oracle的序列...

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

    总结来说,虽然MySQL原生不支持Sequence,但我们可以通过创建表和存储过程来模拟Oracle中的序列功能。这种方法允许我们在MySQL中生成全局唯一的序列号,以满足诸如生成流水号或主键等需求。然而,这种方法可能存在...

    oracle_mysql系统移植方案归类.pdf

    - Oracle的`SEQUENCE`在MySQL中可以通过创建带有`AUTO_INCREMENT`的表并利用`LAST_INSERT_ID()`函数来模拟。每次插入新行后,`LAST_INSERT_ID()`返回的就是自增列的最新值。 4. **BLOB类型**: Oracle和MySQL都...

    数据从MySQL迁移到Oracle 需要注意什么

    在Oracle中,你需要创建一个序列(SEQUENCE)来模拟自动增长,如: ```sql CREATE SEQUENCE sequence_name INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; ``` 插入记录时,使用`sequence_...

    基于Mysql的Sequence实现方法

    在MySQL中,Oracle数据库中的Sequence概念可以通过自定义的方式进行模拟,因为MySQL本身并不直接支持Sequence。Sequence主要用于生成连续的整数序列,常用于主键生成或其他需要唯一标识的场景。以下是一个基于MySQL...

    ORACLE和MYSQL

    - **MySQL**则没有内置的类似`SEQUENCE`的功能,但可以通过自增字段(`AUTO_INCREMENT`)或者使用触发器等方式来模拟实现序号生成。 ```sql INSERT INTO table_name (column_name) VALUES (seq_name.NEXTVAL); ``` ...

    MySQL转换Oracle的需要注意的七个事项

    MySQL中的`AUTO_INCREMENT`在Oracle中需要用序列(Sequence)来模拟。创建序列的SQL语句如下: ```sql CREATE SEQUENCE sequence_name (最好是表名 序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...

    mysql实现sequence功能的代码

    这里我们将详细介绍如何在MySQL中实现类似Oracle或PostgreSQL中的Sequence效果。 1. **建立Sequence记录表** 首先,我们需要创建一个名为`sys_sequence`的表来存储序列的相关信息。这个表包含以下字段: - `seq_...

    Oracle9i中建立自增字段的最新办法

    在Oracle数据库系统中,与许多其他关系型数据库如MySQL或SQL Server不同,Oracle并没有内置的自增字段(Identity Column)特性。但是,Oracle9i及后续版本提供了Sequence和Trigger机制,使得开发者可以通过这两种...

    mysql currval 和 nextval 函数的实现.txt

    通过上述步骤,我们可以实现在MySQL中类似于Oracle或PostgreSQL中的`currval`和`nextval`的功能。这种方式虽然不如原生支持那么高效,但对于大部分应用场景来说已经足够使用。此外,还可以根据具体需求对函数进行...

Global site tag (gtag.js) - Google Analytics