在oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键相关的知识,希望对你有一定的参考价值。

在oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键我是新手就十分

1、关于主键:在建表时指定primary key字句即可:
create table test(
id number(6) primary key,
name varchar2(30)
);
如果是对于已经建好的表,想增加主键约束,则类似语法:
alter table test add constraint pk_id primary key(id);
其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。

2、关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[MAXVALUE/ MINVALUE n|NOMAXVALUE] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。

比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');

当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。

辛苦手码了这么多字,如果能帮到你,请及时采纳最佳。
参考技术A 1、关于主键:在建表时指定primary key字句即可:
create table test(
id number(6) primary key,
name varchar2(30)
);
如果是对于已经建好的表,想增加主键约束,则类似语法:
alter table test add constraint pk_id primary key(id);
其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。

2、关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[MAXVALUE/ MINVALUE n|NOMAXVALUE] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。

比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');

当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。

辛苦手码了这么多字,如果能帮到你,请及时采纳最佳。
参考技术B

    关于主键:在建表时指定primary key字句即可:
    create table test(
    id  number(6) primary key,
    name varchar2(30)
    );

    如果是对于已经建好的表,想增加主键约束,则类似语法:
    alter table test add constraint pk_id primary key(id);  
    其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。

    也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。

参考技术C sequence + 触发器

ORACLE设置自动递增的方法

1)创建序列:

1
2
3
4
5
6
7
create sequence SEQ_TEST --字段名
minvalue 1        --最小值
maxvalue XXXXX      --设置最大值
start with 1      --从1开始计数
increment by 1    --每次加1个
nocycle           --一直累加,不循环
nocache;          --不建缓冲区

2)mybatis中的序列配置:

 在mybatis你所要调用的新增方法前面插入

 

1
2
3
<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="id"
    SELECT SEQ_TEST.Nextval as id from DUAL  
</selectKey>

 注意:此处的keyProperty是pojo中的主键属性,必须注意,不然没办法获取已经保存主键id。

3)另外,附上查询序列以及删除的sql

查询

1
select from user_sequences;

删除

1
DROP SEQUENCE SEQ_TEST;

以上是关于在oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键的主要内容,如果未能解决你的问题,请参考以下文章

postgreSQL怎样创建一个序列号/自动递增的字段

如何在MySQL&Oracle下创建自动递增字段

oracle的主键要设置默认值为自动递增,怎么处理?

Oracle数据库创建表ID字段的自动递增

ORACLE设置自动递增的方法

Oracle设置自动递增的方法