如何给oracle中的表建一个序列

如何给oracle中的表建一个序列,第1张

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。

1、createsequence

你首先要有createsequence或者createanysequence权限,

createsequenceemp_sequence

incrementby1--每次加几个

startwith1--从1开始计数

nomaxvalue--不设置最大值

nocycle--一直累加,不循环

cache10

一旦定义了emp_sequence,你就可以用currval,nextval

currval=返回sequence的当前值

nextval=增加sequence的值,然后返回sequence值

比如:

emp_sequence.currval

emp_sequence.nextval

可以使用sequence的地方:

-不包含子查询、snapshot、view的select语句

-insert语句的子查询中

-nsert语句的values中

-update的set中

可以看如下例子:

insertintoempvalues

(empseq.nextval,'lewis','clerk',7902,sysdate,1200,null,20)

selectempseq.currvalfromdual

但是要注意的是:

-第一次nextval返回的是初始值;随后的nextval会自动增加你定义的incrementby值,然后返回增加后的值。currval总是返回当前sequence的值,但是在第一次nextval初始化之后才能使用currval,否则会出错。一次nextval会增加一次sequence的值,所以如果你在同一个语句里面使用多个nextval,其值就是不一样的。明白?

-如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdownabort),cache中的sequence就会丢失.所以可以在createsequence的时候用nocache防止这种情况。

2、altersequence

你或者是该sequence的owner,或者有alteranysequence权限才能改动sequence.可以alter除start至以外的所有sequence参数.如果想要改变start值,必须dropsequence再re-create.

altersequence的例子

altersequenceemp_sequence

incrementby10

maxvalue10000

cycle--到10000后从头开始

nocache

影响sequence的初始化参数:

sequence_cache_entries=设置能同时被cache的sequence数目。

可以很简单的dropsequence

dropsequenceorder_seq

实现思路:将主键设置为序列,自后每次按照固定规则增加相应的数字即可。

1、首先要有create sequence或者create any sequence权限,

create sequence emp_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

CACHE 10

2、插入到表中,

INSERT INTO emp VALUES

(emp_sequence .nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20)

1、创建表的同时创建主键约束

(1)无命名

create

table

student

(

studentid

int

primary

key

not

null,

studentname

varchar(8),

age

int)

(2)有命名

create

table

students

(

studentid

int

,

studentname

varchar(8),

age

int,

constraint

yy

primary

key(studentid))

2、删除表中已有的主键约束

(1)无命名

可用

select

*

from

user_cons_columns

查找表中主键名称得student表中的主键名为sys_c002715

alter

table

student

drop

constraint

sys_c002715

(2)有命名

alter

table

students

drop

constraint

yy

3、向表中添加主键约束

alter

table

student

add

constraint

pk_student

primary

key(studentid)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11308050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存