mysql等其他數(shù)據(jù)庫中有隨著記錄的插入而表ID自動增長的功能,而
oracle卻沒有這樣的功能,但我們可以用序列和觸發(fā)器來實(shí)現(xiàn)這樣的功能.
一)建立序列:
create sequence SMSLOG_SEQ
minvalue 1
maxvalue 999999999999999999
start with 601
increment by 1
cache 20;
二)建立觸發(fā)器:
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
)
這樣在執(zhí)行: insert into smslog(userid,username,deptid) values('001','aaa','1001');時將會自動給ID自動賦值1,每插入一條記錄,ID的值會增加1.
注:以上序列,觸發(fā)器等在PL/SQL工具中建立很容易,但如果是在命令行中創(chuàng)建,則語句最后要是"/",即執(zhí)行的意思,而不是";",
如創(chuàng)建觸發(fā)器,命令為:
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 閱讀(1293)
評論(0) 編輯 收藏 所屬分類:
Oracle技術(shù)