oracle 自增长

mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,但我们可以用序列和触发器来实现这样的功能.

一)建立序列:
create sequence SMSLOG_SEQ
minvalue
1
maxvalue
999999999999999999
start
with 601
increment
by 1
cache
20;

二)建立触发器:
CREATE OR REPLACE TRIGGER "smslog_trig"
  BEFORE
INSERT ON smslog
  REFERENCING OLD
AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
 
SELECT smslog_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
END smslog_trig;

三)建立表:
create table SMSLOG
(
  ID      
NUMBER not null,
  USERID  
NUMBER,
  USERNAME
VARCHAR2(200),
  DEPTID  
NUMBER
)

这样在执行: insert into smslog(userid,username,deptid) values('001','aaa','1001');时将会自动给ID自动赋值1,每插入一条记录,ID的值会增加1.

注:

以上序列,触发器等在PL/SQL工具中建立很容易,但如果是在命令行中创建,则语句最后要是"/",即执行的意思,而不是";",
如创建触发器,命令为:
CREATE OR REPLACE TRIGGER "smslog_trig"
  BEFORE
INSERT ON smslog
  REFERENCING OLD
AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
 
SELECT smslog_seq.NEXTVAL INTO :NEW.ID FROM DUAL;
END smslog_trig;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值