-
2021-04-23 11:39:00
可选参数说明: increment by:序列每次增加的值,负数表示递减,缺省值为1; start with:序列的初始值,缺省值为1; maxvalue:序列可生成的最大值,缺省值为nomaxvalue,即不设置最大值;系统能产生的最大值为10的27次方; minvalue:序列可生成的最小值,缺省值为nominvalue,即不设置最小值; cycle:定义当序列达到最大/小值后是否循环,缺省值为不循环;nocycle:不循环;cycle:循环;如果不使用循环达到限制值后继续产生新值就会出错;使用循环达到最大值后的下一个值为1,和start with设置的值无关,递增还是increment by设置的值; cache:定义缓存序列的个数,缺省值为20,nocache表示不设置缓存;使用缓存可以提高序列的性能,但数据库出错时会造成数据丢失使序列不连续;
oracle需要自定义序列
CREATE SEQUENCE example_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 NOCACHE -- 不建缓冲区
之后插入数据时可以直接使用该序列,例如
insert into user(id,name,age) values (example_sequence.nextval,'张三',23);
或者创建触发器
create trigger tri_user before insert on 表名 for each row begin select 序列名.nextval into:new.主键 from dual; end;
创建触发器之后插入语句就可以省略id了。
删除序列
drop sequence [用户名.]序列名
更多相关内容 -
Oracle与Mysql自动增长列(id)的区别
2020-12-16 12:18:01Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence) ... -
oracle设置主键自动增长
2012-11-09 14:46:02oracle设置主键自动增长 首先,你要有一张表! 然后,你需要一个自定义的sequence 以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle... -
Oracle的ID自增长的设置
2018-05-23 09:19:34Oracle的ID自增长的设置。先编译上边,再编译下边即可。Oracle的ID自增长的设置。先编译上边,再编译下边即可。
创建自动增长序列
Create Sequence gygddj_cfjczb_Sequence Increment by 1 -- 每次加几个 start with 1 -- 从1开始计数 nomaxvalue -- 不设置最大值,设置最大值:maxvalue 9999 nocycle -- 一直累加,不循环 cache 10;
创建触发器
Create trigger gygddj_cfjczb_Sequence before insert on gygddj_cfjczb for each row /*对每一行都检测是否触发*/ begin select gygddj_cfjczb_Sequence.nextval into:New.AUTOID from dual; end;
-
ORACLE中设置ID自增详细
2021-05-30 18:18:27user_id number not null primary key, user_name varchar2(30), credits number, user_password varchar2(32), last_visit date, last_ip varchar2(23) ) create sequence T_USER_SEQ minvalue 1 maxvalue ...create table t_user( user_id number not null primary key, user_name varchar2(30), credits number, user_password varchar2(32), last_visit date, last_ip varchar2(23) ) create sequence T_USER_SEQ minvalue 1 maxvalue 999999999999999999999999999 start with 21 increment by 1 cache 20; create or replace trigger t_user_tr before insert on t_user for each row begin select t_user_seq.nextval into :new.user_id from dual; end t_user_tr; insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming2',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); select * from t_user
第一步:
创建一张表create table t_user( user_id number not null primary key, user_name varchar2(30), credits number, user_password varchar2(32), last_visit date, last_ip varchar2(23) )
- 为这个表创建序列
create sequence T_USER_SEQ minvalue 1 maxvalue 999999999999999999999999999 -- 最大值 start with 21 -- 从21开始 increment by 1 -- 每次递增1 cache 20; --制定存入缓存(也就是内存)序列值的个数 默认20
- 创建一个触发器
t_user_tr:随意的名字,不要重复就行
t_user:表名
user_id :自增的id
create or replace trigger t_user_tr before insert on t_user for each row begin select t_user_seq.nextval into :new.user_id from dual; end t_user_tr;
- 测试
insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming1',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming2',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132'); insert into t_user values(null,'xiaoming',123,'1114',sysdate,'192.168.37.132');
5.查看结果
select * from t_user
这样就可以 本人亲试过;
oralce的自增id -
Oracle主键ID设置自动增长(序列+触发器)
2020-12-29 15:46:23----创建表create table users(user_id number(6) not null,user_name varchar2(20) not null,user_pwd varchar2(20) not null,user_email varchar2(20),user_intro varchar2(20),primary key (user_id));...----创建表
create table users
(
user_id number(6) not null,
user_name varchar2(20) not null,
user_pwd varchar2(20) not null,
user_email varchar2(20),
user_intro varchar2(20),
primary key (user_id)
);
----创建序列
create sequence users_seq
increment by 1
start with 1
nomaxvalue
nominvalue
nocache
----创建触发器
create or replace trigger tr_user
before insert on users
for each row
begin
select users_seq.nextval into :new.user_id from dual;
end;
----插入数据
insert into users values
(users_seq.nextval,'admin','admin','undoner@gmail.com','undoner')
----查询信息
select * from users
----查询序列
select users_seq.nextval from dual;
对sequence说明:
increment by
:用于指定序列增量(默认值:1),如果指定的是正整数,则序列号自动递增,如果指定的是负数,则自动递减。
start with:用于指定序列生成器生成的第一个序列号,当序列号顺序递增时默认值为序列号的最小值当序列号顺序递减时默认值为序列号的最大值。
Maxvalue:用于指定序列生成器可以生成的组大序列号(必须大于或等于start with,并且必须大于minvalue),默认为nomaxvalue。
Minvalue:用于指定序列生成器可以生成的最小序列号(必须小于或等于starr with,并且必须小于maxvalue),默认值为nominvalue。
Cycle:用于指定在达到序列的最大值或最小值之后是否继续生成序列号,默认为nocycle。
Cache:用于指定在内存中可以预分配的序列号个数(默认值:20)。
在sequence中应注意:
1、第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT
BY值,然后返回增加后的值。CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
2、如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdown
abort),cache中的sequence就会丢失.所以可以在create sequence的时候用nocache防止这种情况。
-
oracle中实现表ID自动增长
2021-01-11 22:36:32mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,但我们可以用序列和触发器来实现这样的功能.一)建立序列:create sequence SMSLOG_SEQminvalue 1maxvalue 999999999999999999... -
oracle如何实现主键自动增长
2022-01-03 19:39:14oracle如何实现主键自动增长。 exe_sql ="insert into orders(id,name,remark) values (-1,'Bee(ORM Framework)','InsertAndReturnId')"; id值设为-1,在oracle设置了序号和触发器,可以自动插入递增的id.且可以... -
深入Mysql,SqlServer,Oracle主键自动增长的设置详解
2020-12-15 19:06:431、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: 代码如下:create table customers(id int auto_increment primary key not null, name... -
oracle数据库设置id自增
2017-11-09 10:25:14创建表: 列名大写: ... SELECT "goodst_sequence".nextval INTO :new.ID FROM dual; END; 方法二:界面创建 序列: 触发器: 保存即可id自增 -
Oracle数据库创建表tuser设置主键自动增长
2012-09-06 10:10:14Oracle数据库创建表tuser设置主键自动增长,先创建表,然后创建基于该表的队列。 -
oracle基于序列创建自动增长ID
2018-08-01 17:11:30我们知道在mysql数据库中,在建表语句中可以直接输入auto_increment字段来实现ID的自增长,然而在oracle中并未提供自增长的关键字,因此在oracle中我们需要按照以下步骤实现自动增长字段。 第一步:创建序列 -- ... -
oracle建表并设置ID为自动增长
2018-03-09 19:00:56DATAFILE 'D:\oracle\mypc\oradata\orcl\shopping.dbf' SIZE 20M AUTOEXTEND ON ; create user shopping --创建 用户 用户名 identified by shopping --密码 密码字符 default tablespace shopping ... -
oracle中的ID号实现自增长的方法
2020-09-10 15:23:47主要介绍了oracle中的ID号如何实现自增长,利用序列产生主键值,需要的朋友可以参考下 -
Mysql,SqlServer,Oracle主键自动增长的设置
2021-01-19 16:16:12在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,NAME VARCHAR(15),age INT,email VARCHAR(50),gender ... -
oracle 设置列值自动增长的方法
2021-04-30 11:30:50老师安排的作业要写一个东西 数据库要用oracle设计的时候 想要 UID这一列为自动增长的列 因为学习不多所以就查了资料 留在这里以备忘记=======================================oracle不能在建表时定义自动增长的列... -
Oracle数据库实现自增长列
2021-05-01 07:00:52阅读提示:文章中与...FineReport最新版免费试用:https://www.finereport.com/product/activeFineReport最新版使用教程:https://help.fanruan.com/finereport/SqlServer 和MySql都有自增长的功能,而Orac... -
实现oracle数据库字段自增长(两种方式)
2020-09-10 08:07:47主要通过两种方式实现oracle数据库字段自增长,第一种方式是序列+触发器,第二种方式序列+显示调用序列,需要的朋友可以参考下 -
Oracle中表新增数据实现id自增长的方式
2020-07-23 17:49:51Oracle数据库不论是使用PL/SQL工具或者是sqldeveloper都不能在新建表的时候像MySQL一样设置id自增长,如在开发或者是学习中,id自增长却又是必须要实现的。 2.分析 在Oracle中,实现 id 自增长的方式是序列+... -
oracle 创建字段自增长实现方式
2020-12-16 01:11:34mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能。 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建方式。 ... -
oracle设置自动增长id,mybatis如何插入数据?
2017-08-14 04:15:25insert into FLIGHTS(ID,FLIGHT_CODE,FLIGHT_DATE,AIRLINE,TYPE,TAKE_AIRPORT_ID,LANDING_AIRPORT_ID,TAKE_TIME,LANDING_TIME,FLIGHT_TIME,STOP_AIRPORT,REFERENCE_PRICE) values(#{id},#{flightCode},#{flight... -
OracleID自增长
2016-11-22 20:21:45使用Oracle开发过程中id不会像MySQL那样能够自动增长,此时需要对id进行相关的设置,id的自动增长能够更好地帮助你在开发过程中进行统计与整理数据 -
oracle 通过PL/SQL 设置表的ID自动增加
2018-12-14 22:41:54设置ID字段自动增加,mysql随便一条DDL语句即可,oracle需要...下面记录一下通过PL/SQL设置oracle表的ID自动增加 1.建表 -- Create table create table A_IMS_1 ( id NUMBER not null primary key, name VARCHA... -
oracle怎么实现自增长
2021-05-01 09:35:20oracle如何实现自增长?...oracle如何实现自增长,有一个表:CREATE TABLE `dutswitch` (`ID` int(11) NOT NULL auto_increment,`MachineName` varchar(20) NOT NULL,`CustomerLotID` varchar(20) NOT NULL,`s... -
oracle id 自动递增
2013-10-24 15:09:44oracle id 自动递增 免费下载,oracle id 自动递增 免费下载,