posts - 60,comments - 71,trackbacks - 0

    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;
/
posted on 2008-05-31 16:19 henry1451 阅读(1280) 评论(0)  编辑  收藏 所属分类: Oracle技术

只有注册用户登录后才能发表评论。


网站导航: