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