oraclenextval的简单介绍
本篇文章给大家谈谈oraclenextval,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
数据库中nextval是什么意思
oracle数据库中nextval用来获取序列号的下一个squence的值。
在oracle中sequence就是所谓的序列号,每次取的时候它会自动帆岩增加,一般用在需要按序列号排序的地方或者在实际开发中,比如一个需求表格中的需求ID是唯一主键,都可以用sequence来获取。
首先在用Oracle序列号之前,我们首先得创建一个序列然后就可以通过CURRY、NEXTVAL,获取当前表中的返回sequence的当前值、下一个squence的值。
扩展资料
获取一个sequence值的方唤轿稿法:
SELECT INR_REQUIRMENT_SQUENCE.CURRVAL FROM dual –获取当前的sequence的值。
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值, 然后返回增加后的值。
CURRVAL 总是返回当前sequence的值,但是在第一次NEXTVAL 初始化之后才能使和孝用CURRVAL,否则会出错。一次NEXTVAL会增加一次sequence的值, 所以如果你在同一个语句里面使用多个NEXTVAL。
[img]Oracle数据库中nextval和values代表什么意思
可以通过在 SQL 语句中使用巧闭 NEXTVAL 或 CURRVAL 运算符来访问序列的值。必须用以 sequence.NEXTVAL 或 sequence.CURRVAL 格式驻留在同一个数据库中的序列名称(或同义词)来限定 NEXTVAL 或 CURRVAL。表达式也可以用所有者名来限定序列,如 zelaine.myseq.CURRVAL。可以指定 sequence 的 SQL 标识或有效同义词(如果存在的话)。
在符合 ANSI 的数据库中,如果您不是所有者,必须用所有者名(owner.sequence)限定序列名。
要对序列使用 NEXTVAL 或 CURRVAL,必须对序列具有选择特权或对数据库具有 DBA 特权。关于序列级特权的信息,请参阅 GRANT 语句。
使用 NEXTVAL
第一次访问一个序列,在引用 sequence.CURRVAL 之前必须先引用 sequence.NEXTVAL。第一次拦握引用 NEXTVAL,返回序列的初始值。后面每次引用 NEXTVAL,用已定义的 step 增加序列值并返回序列新的增加以后的值。
在一个 SQL 语句中只能对给定的序列增加一次。即使在一个语句中多次指定 sequence.NEXTVAL,序列也只增加一次,所以每次 sequence.NEXTVAL 出现在同一 SQL 语句中返回相同的值。
除了在同一语句中多次出现这种情况以外,每个 sequence.NEXTVAL 表达式都会增加序列,无论后来是否提交或回滚当前事务。
如果在最终回滚的事务中指定 sequence.NEXTVAL,某些序列数可能被跳过。
使用 CURRVAL
任何对 CURRVAL 的引用返回指定序列的当前值,该值是最后一次对 NEXTVAL 的引用所返回的值。用 NEXTVAL 生成一个新值以后,可以继续使用 CURRVAL 访问这个值,不管另一个用户是否增加这个序列。
如果 sequence.CURRVAL 和 sequence.NEXTVAL 都出现在一个 SQL 语句中,则序列只增加一次。在这种情况下,每个 sequence.CURRVAL 和 sequence.NEXTVAL 表达式都返回相同的值,不管在语句中 sequence.CURRVAL 和 sequence.NEXTVAL 的顺序。
序列的并发访问
序列总是在数据库中生成唯一值,即使当多个用户并发地引用同一序列时也没有可察觉的等待或锁定。当多个用户使用 NEXTVAL 来增长序列时,每个用户生成一个其他用户不可见的唯一值。
当多个用户并发地增加同一序列时,每个用户看到的值是有差异的。例如,一个用户可能从一个序列生成一组值,如 1、4、6 和 8,而另一个用户并发地从同一序列生成值 2、3、5 和 7。
限制
NEXTVAL 和 CURRVAL 只在 SQL 语句中有效,并不在 SPL 语句中直接有效。(但是使用 NEXTVAL 和 CURRVAL 的 SQL 语句可用于 SPL 例程。)以下限制应用于 SQL 语句中的这些运算符:
必须对序列有选择特权。
在 CREATE TABLE 或 ALTER TABLE 语句中,在下列上下文中不能指定 NEXTVAL 或 CURRVAL:
在 DEFAULT 子句中
在检查约束中。
在 SELECT 语句中,下列上下文中不能指定 NEXTVAL 或 CURRVAL:
使用 DISTINCT 关键字时在投影列表中。
在 WHERE、GROUP BY 或 ORDER BY 子句中
在子查询中
在 UNION 运算符结合 SELECT 语句时。
在下简宽庆列这些上下文中也不能指定 NEXTVAL 或 CURRVAL:
在分段存储表达式中
在对另一个数据库中的远程序列对象的引用中。
示例
在下面的例子中,假设没有其它用户并发地访问序列并且用户连续执行语句。
oracle nextval 语法
oracle?
create table benchmarksql.history (
hist_id integer not null default hist_id_seq.nextval() primary key,
h_c_id 铅宏 number,
h_c_d_id integer,
樱源 h_c_w_id integer,
h_d_id integer,
h_w_id integer,
h_date timestamp,
h_amount decimal(6,2),
h_data 脊激态varchar(24)
);
关于oraclenextval和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。