Oracle中自增列可以用序列或触发器实现, 在12c版本中加入了专门的自增列功能,
看看语法:

可以看出, 语法跟序列完全一样, 其底层用的还是序列。
name列上有唯一约束, 待会儿会用到。
-- 最简单写法:
create table AUTO_INCREMENT_TABLE (
id number(4) generated as identity,
name varchar2(20) unique);
-- 把上面的建表语句写的稍微详细一点:
create table AUTO_INCREMENT_TABLE (
id number(4) generated as identity start with 1 increment by 1 nomaxvalue nocycle cache 20,
name varchar2(20) unique);
插入几条数据看看:
INSERT INTO AUTO_INCREMENT_TABLE(NAME) VALUES('BUG');
INSERT INTO AUTO_INCREMENT_TABLE(NAME) VALUES('TOM');
INSERT INTO AUTO_INCREMENT_TABLE(NAME) VALUES('Jerry');
COMMIT;
SELECT * FROM AUTO_INCREMENT_TABLE;

Oracle12c引入了自增列功能,使用GENERATEDASIDENTITY创建,底层基于序列。插入数据时,ID列自动增长。需要注意的是,错误的SQL可能导致违反唯一约束,ROLLBACK不会影响序列值,TRUNCATE清空表后序列值不变。可通过USER_TAB_IDENTITY_COLS查看自增列详情。
最低0.47元/天 解锁文章
8362

被折叠的 条评论
为什么被折叠?



