oracle自增如何实现 Oracle 自增

oracle中如何实现某一字段自增

-----oracle 指定字段 自增 ,1.要先创建一个序列 2. 之后创建一个触发器

创新互联是一家专业提供莒南企业网站建设,专注与成都网站设计、成都网站建设、HTML5、小程序制作等业务。10年已为莒南众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

--- 序列 (序列与触发器实现t_sys_organize表中F_ID字段的自动增长)

create sequence t_sys_organize_F_ID_SEQUENCE

minvalue 100000

maxvalue 99999999

start with 100000

increment by 1

nocache;

--触发器 (序列与触发器实现t_sys_organize表中F_ID字段的自动增长)

CREATE OR REPLACE TRIGGER t_sys_organize_F_ID_TRIGGER BEFORE INSERT ON t_sys_organize FOR EACH ROW WHEN(NEW.F_ID IS NULL)

BEGIN

SELECT t_sys_organize_F_ID_SEQUENCE.NEXTVAL INTO:NEW.F_ID FROM dual;

END;

oracle是怎么实现表的自增

用触发器trigger的功能来实现它: 1、首先建立一个创建自增字段的存储过程create or replace procedure pro_create_seq_col

(tablename varchar2,columnname varchar2)

as

strsql varchar2(1000);

begin

strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';

execute immediate strsql;

strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end;';

execute immediate strsql;

end;

/

2、Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限)GRANT CREATE ANY SEQUENCE TO UserName;

GRANT CREATE ANY TRIGGER TO UserName;

3、重新Compile存储过程pro_create_seq_col; 4、搞定,下面我们就可以用这个存储过程建立自增自段了。 5、调用存储过程建立自增字段(提示: 第一个参数是表名,第二个参数为自增字段的名字)exec pro_create_seq_col('sb_zsxx','zsxh');

exec pro_create_seq_col('sb_sbxx','sbxh');

exec pro_create_seq_col('sb_jkx','pzxh');

exec pro_create_seq_col('sdspfp','sysfpid');

oracle怎么把主键设置自动增长

第一种,通过序列以及触发器实现主键自增长。

这种方式适用于直接使用JDBC连接数据库。这种方式将主键自增长的任务完全交给数据库,我们无需在代码层面上进行任何控制。

第二种,通过序列以及Hibernate配置实现自增长。

这种方式适用于通过Hibernate连接数据库的方式。这种方式在数据库上创建序列,通过配置在POJO类上的注释,让Hibernate去调用数据库的序列实现自增长。

这两种方式都是通过Oracle的序列实现自增长,但第一种通过数据库的触发器在插入的时候自动插入主键。而后者则由Hibernate自动完成获取主键,插入主键这一操作。

oracle 如何实现主键id自增,或自动生成

一、主键id自增

oracle 中不能设置自动增加,这个和其他数据库不一样,但是有 序列,这个是Oracle自己特有的东西,

1、首先创建序列:create sequence seq;

语法:

CREATE SEQUENCE 序列名

[INCREMENT BY n] --每次加几

[START WITH n] --序列从几开始

[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制

比CREATE SEQUENCE seq start with 1 increment by 1; --建立了额从1开始每次加1序列

访问序列时用 序列名称.nextval语法

这就创建好了,然后 seq.nextval 就会返回一个值,不会重复的值,

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

这样前3个id 分别是 1,2,3

二、自动生成UUID策略

import java.util.UUID;

Student s = new Student();

s.setId(UUID.randomUUID().toString());

Oracle怎么建自动增长列

oracle:

oracle没有自增长序列,因此可以用以下方法来实现

1.建立表格:

createtabletable1

(

cidnumber(8)notnull,

othersvarchar2(20)

);

2.建立从1开始的序列:

createsequenceemp_sequence

incrementby1--每次加几个

startwith1--从1开始计数

nomaxvalue--不设置最大值

nocycle--一直累加,不循环

nocache--不建缓冲区3.建立触发器:

createorreplacetriggermytgr

beforeinsertontable1foreachrow

begin

selectmytgr.nextvalinto:new.cidfromdual;

end;

mysql:

createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,

a_titlevarchar(32),

a_contenttext);

在oracle 怎样设置自动递增的的字段?

关于主键:在建表时指定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功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。


分享标题:oracle自增如何实现 Oracle 自增
文章地址:http://azwzsj.com/article/hisesc.html