`
鬼眼小菜刀
  • 浏览: 40685 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

MySQL和Oracle中的自增长问题

阅读更多

·MySQL中的自增长问题比较简单

MySQL中有个AUTO_INCREMENT属性,只需

  1. createtabletbname
  2. (
  3. a_idunsignedintprimarykeyauto_incrementnotnull,
  4. a_titlevarchar(32),
  5. a_contenttext
  6. );

注意:

1.把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。把0插入AUTO_INCREMENT数据列的效果与插入NULL值一样。但不建议这样做。

2.如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。

3.AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。

4.AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

5.AUTO_INCREMENT数据列必须具备NOT NULL属性。

6.AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

·Oracle中比较复杂,需要用触发器和序列来完成

1.首先建一张表:

  1. CREATETABLETable1
  2. (
  3. CIDNUMBER(8)NOTNULLPRIMARYKEY,
  4. NAMEVARCHAR2(20),
  5. PWVARCHAR(10),
  6. SEXVARCHAR(4),
  7. );
2.建立一个主键的序列范围:
  1. CREATESEQUENCEemp_sequence
  2. INCREMENTBY1--每次加几个
  3. STARTWITH1--从1开始计数
  4. NOMAXVALUE--不设置最大值
  5. NOCYCLE--一直累加,不循环
  6. NOCACHE--不建缓冲区

3.建立一个触发器:

  1. CREATETRIGGERuser_id_triggerBEFORE
  2. INSERTONTABLE1FOREACHROW
  3. begin
  4. selectemp_sequence.nextvalinto:new.idfromdual;
  5. end;

注意:

1.“:new”是一个整体,不要写错了!!!

2.在程序中还可以直接用"emp_sequence.nextval"来代替主键值。

分享到:
评论

相关推荐

    OracleID自增长

    使用Oracle开发过程中id不会像MySQL那样能够自动增长,此时需要对id进行相关的设置,id的自动增长能够更好地帮助你在开发过程中进行统计与整理数据

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

    Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  ...

    简述MySQL与Oracle的区别

    1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率...①主键 Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracl

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

    Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名 序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    本篇文章是对Mysql,SqlServer,Oracle主键自动增长的设置进行了详细的分析介绍,需要的朋友参考下

    Oracle与MySQL的几点区别

    这个放在mysql中没有问题在oracle中有问题了。  2.自动增长的数据类型处理  MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一

    MySQL实现类似Oracle序列的方案

    Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...

    Oracle 和 mysql的9点区别

    这个放在mysql中没有问题在oracle中就有问题了 2.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,...

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

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

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

    ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...

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

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

    对有自增长字段的表导入数据注意事项

    您可能感兴趣的文章:SQL Server设置主键自增长列(使用sql语句实现)oracle中的ID号实现自增长的方法mysql修改自增长主键int类型为char类型示例自增长键列统计信息的处理方法实现oracle数据库字段自增长(两种方式)

    毕业设计-基于java swing mysql开发的和Oracle飞机订票系统(ppt+ER图+架构说明有lun文视频源码)

    为了满足这一市场需求,我们开发了一套基于Java Swing和MySQL的飞机订票系统,该系统可无缝集成Oracle数据库,为用户提供高效、便捷的订票服务。 **二、项目功能** 1. **用户界面**:采用Java Swing技术构建直观、...

    MySQL rownumber SQL生成自增长序号使用介绍

    MySQL 几乎模拟了 Oracle,SQL Server等商业数据库的大部分功能,函数。但很可惜,到目前的版本(5.1.33)为止,仍没有实现ROWNUM这个功能

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

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

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

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

    MySQL中常见的八种SQL错误用法示例

    MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打...

    程序员的SQL金典6-8

     10.4.3 Oracle中的自动增长字段  10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  ...

Global site tag (gtag.js) - Google Analytics