两种oracle创建域自增长模式

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字段的自增长。