程序猿知道MySQL和其他数据库具有自动增加ID列表和插入记录的功能。相反,Oracle没有这个功能。这里有两种解决田间生长问题的方法。

由于需要创建一个序列来创建所有这两种方式,所以首先创建一个序列的方法。

复制代码代码如下所示:

创建序列序列名

{由n增加

{以n开头

{ {最大/最小N | nomaxvalue } }

{ {循环| nocycle } }

{ {缓存N | NoCache } };



解析:

1)递增是用来定义一个序列的步长,如果省略,默认值是1。如果有负值,则Oracle序列的值将根据此步长减小。

2)首先定义序列的初始值(即生成的第一个值),默认值是1。

3)次定义序列发生器可以产生最大的价值。nomaxvalue选项是默认选项,这是没有最大值的定义。对于增量的Oracle序列,系统可以生成的最大值是10个27方方。对于降序序列,最大值是- 1。

4)自动定义可由序列发生器产生的最小值。nomaxvalue选项是默认选项,这表示没有最小值定义。对于降序序列,系统可以生成的最小值是10的26倍。递增序列的最小值是1。

5)周期和nocycle指示序列发生器的值是运行时发电机的值达到limit.cycle代表一个周期,和nocycle表示没有周期。如果循环,当递增序列的最大值,最小值和最大值的循环,循环时的递减顺序到达最小。如果它不流通,达到限制之后,它会继续产生新的价值观的错误。

6)缓存(buffer)定义用于存储序列的内存块的大小,默认值为20.nocache表明内存缓冲区,不用于序列。该序列的内存缓冲区可以提高序列的性能。

解决方案一,序列+触发器

具体的实现方法如下:

第一步,创建序列

复制代码代码如下所示:

创建序列

创建序列seq_t_recv

自动1

9999999次

从1开始

增量的1

缓存50;



第二步,创建一个表

复制代码代码如下所示:

创建表

创建表recv_msg

(

身份证号码,

messageId VARCHAR2(32),

内容VARCHAR2(2000),

app_flg VARCHAR2(100),

PhoneNumber VARCHAR2(2000),

更新日期默认系统日期

);



第三步,设置扳机

复制代码代码如下所示:

创建触发器recv_trig

在recv_msg之前插入

每一行引用旧的旧的新的

声明

开始

选择seq_t_recv.nextval为:new.id双;

最后recv_trig;



第四步,测试确认

将一块数据插入表中,以查看id字段是否自动增加。

解决方案二,序列+显示调用序列

1。创建序列

复制代码代码如下所示:

创建序列seq_on_test

增量的1

从1开始

nomaxvalue

nocycle

非缓存;



两。表的构造

复制代码代码如下所示:

-建立一张桌子

下拉表测试;

创建表测试(

ID的整数

stu_name类型(4)

stu_age数

);



三。插入数据(显示调用序列的下一个值)

复制代码代码如下所示:

插入数据

插入测试值(seq_on_test。nextval,玛丽,15);

插入测试值(seq_on_test。nextval,',16);



四。检查

复制代码代码如下所示:

从测试中选择*;



结果

*

1玛丽15

2汤姆16

* /



附带条件:查看当前值的视图和序列的下一个值。

复制代码代码如下所示:

两种方法

选择seq_on_test.currval双;

选择seq_on_test.nextval双;



结果

*

二

三

* /



以上是介绍oracle数据库字段的两种自我增长方式,希望对您有所帮助。