請教ORACLE中自增列函數是什麼

时间:2021-11-20 00:07:52
請教ORACLE中自增列函數是什麼 
例如SQL SERVER中的identity(int,1,1)

7 个解决方案

#1


oracle是通过序列和触发器实现的

--1.先创建序列
scott@YPCOST> create sequence orderNo_seq start with 100 increment by 1 maxvalue 999;

序列已创建。

scott@YPCOST> create table test(id number,name varchar2(20));

表已创建。

--2、再加触发器
scott@YPCOST> create or replace trigger insert_tri
  2  before insert on test
  3  for each row
  4  declare
  5  begin
  6   select orderNo_seq.nextval into :new.id from dual;
  7  end;
  8  /

触发器已创建

scott@YPCOST> insert into test(name) values('tom');

已创建 1 行。

scott@YPCOST> select * from test;

        ID NAME
---------- --------------------
       100 tom

#2


序列+触发器 实现,楼上是对的。

#4


oracle  有个类似sql的 自增列函数 sequence  
可以通过代码在sqlpus  或plsql developer 中建立
-- Create sequence 
create sequence SQ_BROAD_ID
minvalue 1
maxvalue 9999999
start with 1000001
increment by 1
nocache
order;
具体的每个参数的意义 自己查查 。
也可以用plsql developer  进行图像界面建立

#5


用序列就行
sequence.nextVal就是获取序列的下一个值
不过为了保证序列连续 每个表都要有一个对应的序列,不能共用

#6


我进来学那个触发器...

#7


引用 1 楼 zhuomingwang 的回复:
oracle是通过序列和触发器实现的
SQL code

--1.先创建序列
scott@YPCOST> create sequence orderNo_seq start with 100 increment by 1 maxvalue 999;

序列已创建。

scott@YPCOST> create table test(id number,name varchar2(20));

……
+1

#1


oracle是通过序列和触发器实现的

--1.先创建序列
scott@YPCOST> create sequence orderNo_seq start with 100 increment by 1 maxvalue 999;

序列已创建。

scott@YPCOST> create table test(id number,name varchar2(20));

表已创建。

--2、再加触发器
scott@YPCOST> create or replace trigger insert_tri
  2  before insert on test
  3  for each row
  4  declare
  5  begin
  6   select orderNo_seq.nextval into :new.id from dual;
  7  end;
  8  /

触发器已创建

scott@YPCOST> insert into test(name) values('tom');

已创建 1 行。

scott@YPCOST> select * from test;

        ID NAME
---------- --------------------
       100 tom

#2


序列+触发器 实现,楼上是对的。

#3


#4


oracle  有个类似sql的 自增列函数 sequence  
可以通过代码在sqlpus  或plsql developer 中建立
-- Create sequence 
create sequence SQ_BROAD_ID
minvalue 1
maxvalue 9999999
start with 1000001
increment by 1
nocache
order;
具体的每个参数的意义 自己查查 。
也可以用plsql developer  进行图像界面建立

#5


用序列就行
sequence.nextVal就是获取序列的下一个值
不过为了保证序列连续 每个表都要有一个对应的序列,不能共用

#6


我进来学那个触发器...

#7


引用 1 楼 zhuomingwang 的回复:
oracle是通过序列和触发器实现的
SQL code

--1.先创建序列
scott@YPCOST> create sequence orderNo_seq start with 100 increment by 1 maxvalue 999;

序列已创建。

scott@YPCOST> create table test(id number,name varchar2(20));

……
+1