oracle中自增主键,oracle中设置自增主键

但是要注意的是:第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL总是返回当前sequence的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。

------------------------一个例子-----------------------

create   sequence   for_test  --序列名

increment   by   1     --每次增加1

start   with   1     --从1开始

nomaxvalue     --没有最大值

nocache        --没有缓存序列

----------------------------创建测试表------------------

create table Test

(

TestID int primary key,

TestName varchar2(20) not null,

Tdescription varchar2(200) null

)

-----------------------------使用序列-------------------

insert into Test

values(for_test.nextval,'序列测试','这是一个序列使用的例子')

--------------------序列使用结果查询-----------------

select * from test

触发器

1

CREATE or replace TRIGGER "触发器名称" BEFORE

INSERT ON Test FOR EACH ROW WHEN (new.TestID is null)

begin

select for_test.nextval into: new.TestID from dual;  //for_test  序列名

end;

INSERT INTO Test (TestName,Tdescription ) Values('Cao','Heibei');

删除触发器     drop trigger 触发器名称 2

create or replace trigger trigger_name

before insert on your_sid.tablename

for each row

begin

declare

i number;

cursor cur is select max(id) from your_sid.tablename;

BEGIN

open cur;

FETCH cur INTO i;

if i is NULL then

:new.id := 0;  //可以根据实际需要来定初始值

else

:new.id := i + 1; //这里以1递增

end if;

Close cur;

END;

END;

/

其中:your_sid为数据库的当前用户SID,tablename为表名,id为列名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值