·MySQL中的自增长问题比较简单
MySQL中有个AUTO_INCREMENT属性,只需
- createtabletbname
- (
-
a_idunsignedintprimarykeyauto_incrementnotnull,
- a_titlevarchar(32),
- a_contenttext
- );
注意:
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.首先建一张表:
- CREATETABLETable1
- (
- CIDNUMBER(8)NOTNULLPRIMARYKEY,
- NAMEVARCHAR2(20),
- PWVARCHAR(10),
- SEXVARCHAR(4),
- );
2.建立一个主键的序列范围:
- CREATESEQUENCEemp_sequence
-
- INCREMENTBY1--每次加几个
- STARTWITH1--从1开始计数
- NOMAXVALUE--不设置最大值
- NOCYCLE--一直累加,不循环
- NOCACHE--不建缓冲区
3.建立一个触发器:
- CREATETRIGGERuser_id_triggerBEFORE
-
- INSERTONTABLE1FOREACHROW
- begin
-
selectemp_sequence.nextvalinto:new.idfromdual;
- end;
注意:
1.“:new”是一个整体,不要写错了!!!
2.在程序中还可以直接用"emp_sequence.nextval"来代替主键值。
分享到:
相关推荐
使用Oracle开发过程中id不会像MySQL那样能够自动增长,此时需要对id进行相关的设置,id的自动增长能够更好地帮助你在开发过程中进行统计与整理数据
Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence) ...
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率...①主键 Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracl
Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名 序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...
本篇文章是对Mysql,SqlServer,Oracle主键自动增长的设置进行了详细的分析介绍,需要的朋友参考下
这个放在mysql中没有问题在oracle中有问题了。 2.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一
Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...
这个放在mysql中没有问题在oracle中就有问题了 2.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,...
mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 ...
ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 ...
程序猿都知道mysql等其他的数据库都有随着记录的插入而表ID会自动增长的功能,反而oracle却没有这一功能,下面通过两种方式来解决字段增长的功能,具体内容情况下文。 因为两种方式都需要通过创建序列来实现,这里先...
您可能感兴趣的文章:SQL Server设置主键自增长列(使用sql语句实现)oracle中的ID号实现自增长的方法mysql修改自增长主键int类型为char类型示例自增长键列统计信息的处理方法实现oracle数据库字段自增长(两种方式)
为了满足这一市场需求,我们开发了一套基于Java Swing和MySQL的飞机订票系统,该系统可无缝集成Oracle数据库,为用户提供高效、便捷的订票服务。 **二、项目功能** 1. **用户界面**:采用Java Swing技术构建直观、...
MySQL 几乎模拟了 Oracle,SQL Server等商业数据库的大部分功能,函数。但很可惜,到目前的版本(5.1.33)为止,仍没有实现ROWNUM这个功能
mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 CREATE ...
由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能,理由sql语句如下: 第一步:创建–Sequence 管理表 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( ...
MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打...
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和函数 ...