ORACLE中ID自动增加字段
文章作者 100test 发表时间 2007:05:14 11:15:09
来源 100Test.Com百考试题网
自动增加字
CREATE TABLE t_topic (
topicId NUMBER(18,0) NOT NULL , -- 主题ID
topicTitle VARCHAR2(100) NOT NULL , -- 主题名
topicContent varchar2(2000) NOT NULL , -- 主题内容
topicAuthor VARCHAR2(20) NOT NULL , -- 主题发表者(论坛帖子发表人)
topicBoaId NUMBER(1,0) NOT NULL REFERENCES t_board(boaId) , -- 主题属于论坛哪个模块
topicHits NUMBER(18,0) DEFAULT 0 , -- 主题点击数
topicElite NUMBER(1,0) DEFAULT 0 , -- 是否为精华帖子 0、否 1、是
topicTop NUMBER(1,0) DEFAULT 0 , -- 是否置顶主题 0、否 1、是
topicLock NUMBER(1,0) DEFAULT 0 , -- 是否禁止回复 0、否 1、是
topicDel NUMBER(1,0) DEFAULT 0 , -- 是否删除回复 0、否 1、是(特殊用途,管理员文章不让跟贴)
topicPubTime DATE NOT NULL, -- 主题被创建时间
topicReNum NUMBER(18,0) DEFAULT 0 , -- 回复主题的总数
topicReUser VARCHAR2(20) DEFAULT , -- 最后回复的作者
topicReTime DATE , -- 最后回复的时间
topicIp VARCHAR2(15) DEFAULT , -- 发表人的IP
PRIMARY KEY (topicId)
).
Create Sequence t_topic_Id_sequence --主题序列
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE.
CREATE OR REPLACE TRIGGER t_topic_Id_trigger //触发器
BEFORE INSERT
ON t_topic
FOR EACH ROW
DECLARE
newId NUMBER(18,0).
BEGIN
SELECT t_topic_Id_sequence.nextval INTO newId FROM dual.
:new.topicId := newId.
END.