Oracle/DM序列基本使用
在Oracle和达梦数据库中,序列(Sequence)是一种用于生成数据库中唯一数字序列的数据库对象。序列通常用于自动生成主键值。
以下是创建序列、查询序列当前值和序列下一个值以及使用序列生成主键的基本示例:
Oracle数据库:
-- 创建序列
CREATE SEQUENCE seq_name
START WITH 1
INCREMENT BY 1
NOMAXVALUE;
-- 查询序列的当前值(CURRVAL)
SELECT seq_name.CURRVAL FROM dual;
-- 查询序列的下一个值(NEXTVAL)
SELECT seq_name.NEXTVAL FROM dual;
-- 使用序列生成主键
INSERT INTO table_name (id, column2, column3, ...)
VALUES (seq_name.NEXTVAL, value2, value3, ...);
达梦数据库:
-- 创建序列
CREATE SEQUENCE seq_name
START WITH 1
INCREMENT BY 1
NOMAX;
-- 查询序列的当前值(CURRVAL)
SELECT CURRVAL(seq_name);
-- 查询序列的下一个值(NEXTVAL)
SELECT NEXTVAL(seq_name);
-- 使用序列生成主键
INSERT INTO table_name (id, column2, column3, ...)
VALUES (seq_name.NEXTVAL, value2, value3, ...);
请注意,在查询序列的当前值之前,必须先查询序列的下一个值,因为序列的初始值是NULL
,直到第一次调用NEXTVAL
才会生成一个值,此后CURRVAL
才有意义。此外,在同一个会话中,CURRVAL
和NEXTVAL
必须在同一个序列上连续使用,不能在两次查询之间调用其他序列的NEXTVAL
或者CURRVAL
。
评论已关闭