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

转载地址:http://blog.itpub.net/22880668/viewspace-1117343/

将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)

----创建表

Create table t_user(

Id number(6),userid varchar2(20),loginpassword
varchar2(20),isdisable number(6)

);

----创建序列

create sequence user_seq

increment by 1

start with 1

nomaxvalue

nominvalue

nocache

----创建触发器

create or replace trigger tr_user

before insert on t_user

for each row

begin

select user_seq.nextval into :new.id from dual;

end;

----测试

insert into t_user(userid,loginpassword, isdisable)

values(‘ffll‘,‘liudddyujj‘, 0);

insert into t_user(userid,loginpassword, isdisable)

values(‘dddd‘,‘zhang‘, 0)

select * from t_user;

就可以看出结果。

对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掉(shutdownabort),cache中的sequence就会丢失.
所以可以在create sequence的时候用nocache防止这种情况。

时间: 2024-08-24 04:25:40

Oracle数据库创建表ID字段的自动递增的相关文章

mysql 数据库创建表 id 字段的 sql 设置

`id` int unsigned not null auto_increment primary key, 1.SQL PRIMARY KEY 约束PRIMARY KEY 约束唯一标识数据库表中的每条记录.主键必须包含唯一的值.主键列不能包含 NULL 值.每个表都应该有一个主键,并且每个表只能有一个主键. 2.AUTO_INCREMENT 字段我们通常希望在每次插入新记录时,自动地创建主键字段的值.我们可以在表中创建一个 auto_increment 字段. 3.unsigned 无符号整型

Oracle数据库创建表空间

--Oracle数据库创建表空间 create tablespace new_taspace --表空间名 DATAFILE 'D:\NEWTABLESPACE.DBF'   --表空间关联的数据文件和位置 size 200M --文件初始大小 autoextend on next 20MB MAXSIZE 400MB; --文件大小可自动扩展,每次扩展20MB,最大400MB --创建表空间 create tablespace new_taspace1 --表空间关联的数据文件和位置 DATA

oracle数据库创建表且主键自增

Oracle数据库中,设置ID自增并不像MySQL中那么简单,Oracle中需要设置一个序列. 现在给出方式,具体如下: 第一步:建立一个表 create table ContestDB ( TID NUMBER(10) PRIMARY KEY, TEAMNUM varchar(50) not null, MARKNUM varchar(50) ); 第二步:设置ID自增 第一种方式:不使用触发器 1 CREATE SEQUENCE SEQ_TID; 2 INSERT INTO ContestD

oracle数据库创建表

实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以了,其他的就好说了.接下来呢,开始我的表演.首先,先使用plsql连接到oracle数据库,先保证下面的服务是开启的. 我们本次创建表的需求是:创建一张班级表,和一张学生表. 1.首先班级表作为主表也就是所谓的主键.在主表中我们这里使用的约束是primarykey 和not null  (当然不局限于这些) create t

Linux oracle数据库创建表空间、用户并赋予权限

管理员用户登录oracle数据库 1.创建临时表空间 select name from v$tempfile;查出当前数据库临时表空间,主要是使用里面的存放路径: 得到其中一条记录/opt/oracle/oradata/orcl/temp01.dbf 创建临时表空间:create temporary tablespace plncontrol_temp tempfile '/opt/oracle/oradata/orcl/plncontrol_temp.dbf' size 100m reuse

oracle 数据库 , 表中字段顺序修改

1.首先需要sys或者system权限操作 2.查询需要更改的表的ID select object_id from all_objects where owner = '用户名' and object_name = 'tableName';  注:表名需要大写 3.通过ID查询出该表所有字段的顺序 select obj# , col# , name from sys.col$ where obj#  = '表ID' order by col# 4.修改顺序:更改目标行 , 更改受影响的行 upd

Oracle 数据库创建表空间、创建用户

创建表空间 create temporary tablespace user_name_temp tempfile '/oradata/ORA11G/user_name_temp.dbf' size 50m autoextend on next 50m maxsize unlimited --maxsize 2048m extent management local; create tablespace user_name_tb logging datafile '/oradata/ORA11G

linux部署Oracle数据库--创建表空间和用户(我的是26的库时间20192271128)

1,创建表空间 CREATE TABLESPACE BM   DATAFILE '/oradata/mdsdata/mdsmpac001' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; CREATE TABLESPACE BM_BM   DATAFILE '/oradata/mdsdata/mdsmpac00

SQL_Oracle 表中字段的自动递增

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/43937701 目标:实现向一张表中插入数据时,ID字段自动递增. 开始实验: (1).创建实验表 createtable test_ID_add ( IDNUMBER(10), USERNAME VARCHAR2(32), TEL VARCHAR2(11), CREA