如果没有必须累加1的要求,允许跳号的话,最好使用sequence,
创新互联建站专业为企业提供湘潭县网站建设、湘潭县做网站、湘潭县网站设计、湘潭县网站制作等企业网站建设、网页设计与制作、湘潭县企业网站模板建站服务,10余年湘潭县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
没有性能问题。
可以在创建sequence的时候设定开始值就是100000,插入的时候用select
sequenceName.Nextval
就可以自增长。
如果不采用这种方式,可以新建一张表存放当前ID的最大值,每次从这里取值,然后再update
+
1.
记得需要for
update锁表,以免并发时号码重复。不建议这种方式,性能比较差
oracle表中创建序列语法:
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
示例:
increment by n:表明值每次增长n(步长)。
start with n: 从n开始。
{MAXVALUE n | NOMAXVALUE}: 设置最大值。
{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。
CYCLE | NOCYCLE : 是否循环,建议不使用
CACHE n | NOCACHE : 是否启用缓存。
2、插入数据到表中
示例:
INSERT INTO emp VALUES
(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
扩展资料:
sql server数据库里建序列:
alter table cust_info add sequence int
insert into cust_info (sequence)
select row_number() over(order by cust_id) as cust_id_seq from cust_info
CREATE SEQUENCE emp_sequence -- emp_sequence这个就是后面要用到这个序列号时引用的名称
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 100; -- 缓存值 100
当 需要使用该序列号的值时,直接调用创建的序号号中的 nextval方法。
如: emp_sequence.nextval (注意:后面没有括号,它是一个属性值)
删除序列
DROP SEQUENCE emp_sequence;
使用ROWNUM
这样每次插入的时候都是根据行数来重新生成的这个值。
如果你想从1开始。那就INSERT
INTO
...
select
ROWNUM
AS
ID.....
从2开始就
INSERT
INTO
...
select
ROWNUM+1
AS
ID.....
需要先创建序列,然后nextval添加数据使其自动生成序号。 1、创建表: create table test(id int,name varchar2(20));2、创建序列: Create sequence seq_test_idIncrement by 1Start with 1Maxvalue 999999Minvalue 1Nocyclenocache;3、插入数oracle 数据库 数据表自动生成序号 怎么添加??
比如你要按name 进行group by ,然后按name排序
select row_number() over (order by name) rn,name,sum(计算值) from 表名 group by name