oracle创建带有自增字段和自动更新时间的表

1、-- 创建违规类型对应的表,包括create_time、update_time字段,执行:
create table VIOLATION_REGEX_SCX(
	id number(10) not null primary key,
	violation_type varchar2(50),
	type varchar2(20) default 'base',
	match_pattern varchar2(20) default 'single',
	create_time DATE DEFAULT SYSDATE,
	update_time DATE,
	s1_regex clob,
	s2_regex clob
)

如果你要对其中的一些字段添加注释,可以执行
comment on column VIOLATION_REGEX_SCX.violation_type is '违规类型'

2、创建自增长序列,执行:
create sequence VIOLATION_REGEX_SCX_SEQ
minvalue 1				-- 最小值
-- maxvalue 2000		-- 最大值
nomaxvalue      		-- 不设置最大值 
start with 1			-- 从1开始计数
increment by 1			-- 每次增加1
nocycle					-- 一直累加,不循环
cache 20;

3、给主键id,创建触发器,执行:
create or replace trigger VIOLATION_REGEX_SCX_TR
before insert on VIOLATION_REGEX_SCX
for each row
begin
select VIOLATION_REGEX_SCX_SEQ.nextval into :new.id from dual;
end VIOLATION_REGEX_SCX_TR;

4、给update_time创建触发器,执行:
create or replace TRIGGER VIOLATION_REGEX_SCX_update_time_tr
    before  INSERT OR UPDATE ON VIOLATION_REGEX_SCX
FOR EACH ROW
BEGIN
     IF INSERTING THEN
        :NEW.update_time := SYSDATE;
    ELSIF UPDATING then
        :NEW.update_time := SYSDATE;
    END IF;
END;

你可能感兴趣的:(oracle,oracle,数据库)