利用oracle创建自增字段——oracle序列
复制代码代码如下所示:
创建表s_depart(
分散int不空,
departname类型(40)不为空,
departorder int默认0,
pk_s_depart主键约束(分散)
);
在oracle中,序列就是所谓的序列号,每次它自动增加,通常用于按序号进行排序。
1,创建序列
首先必须创建序列或创建任何序列权限,
创建序列emp_sequence
增加1—每次加几次
从1开始——从1开始计数
nomaxvalue --没有最大值设置
nocycle --总是说,没有循环
10设置缓存;缓存序列,如果系统崩溃了,或者其他情况下会导致序列是不连续的,它也可以被设置为--------- NoCache
创建s_depart顺序如下:
复制代码代码如下所示:
创建序列s_s_depart
自动1
最大999999999999999999999999999
从1开始
增量的1
非缓存;
一旦你定义了emp_sequence,你可以使用CURRVAL,nextval
CURRVAL =返回序列的当前值
nextval =增加序列的值并返回序列值
例如:
emp_sequence.currval
emp_sequence.nextval
可以使用顺序的地方:
选择语句不包含子查询和视图、快照、
对插入语句的子查询
在nsert声明价值
-在一组更新中
您可以看到以下示例:
复制代码代码如下所示:
插入s_depart(分散,departname,departorder)值(s_s_depart。Nextval,'12345 ',1);
选择empseq.currval双;
但应该注意的是:
-第一个next返回初始值;随后的nextval自动增加的值定义然后返回添加value.currval总是返回当前序列值,但是你可以先初始化后使用nextval CURRVAL,否则会出错,会增加一个序列的nextval值所以如果你在同一个语句中使用多个nextval,值是不同的。明白了吗
-如果指定了缓存值,Oracle可以提前将一些序列放入内存,以便访问速度更快。在选择之后的缓存内,Oracle自动获取一组缓存。使用缓存可以跳过数字,例如,数据库突然关闭(关闭中止),缓存中的序列将丢失。所以我们可以使用非缓存来防止这种情况在创建序列。
2,更改序列
要么您拥有序列的所有者,要么您拥有更改序列的任何序列权限。如果要更改起始值,则必须再次下降。
修改序列的一个例子
emp_sequence改变序列
增量的10
10000次
循环-从10000开始
非缓存;
影响序列的初始化参数:
sequence_cache_entries =设置可以同时缓存序列号。
可以很简单的下拉序列
order_seq下降序列;
一个简单的例子:
复制代码代码如下所示:
创建序列seq_id
自动1
99999999次
从1开始
增量的1
非缓存
秩序;
开发人员的代码是:
复制代码代码如下所示:
创建触发器tri_test_id
在插入s_depart -- s_depart是表名
每一行
声明
nextid数;
开始
如:new.departid是零器:新。分散= 0然后--分散是列名
选择seq_id.nextval -- seq_id刚刚才创建的
为nextid
从sys.dual;
新nextid分散:=;
最后如果;
最后tri_test_id;
好的,上面的代码可以自动递增。