标签:
MySql中在字段定义后面使用 AUTO_INCREMENT 属性实现自增长,Oracle如何实现主键自增长?
建表:
create table users( userId number(10) not null, username varchar2(30) not null, birthday date default null, sex char(1) default 1 check (sex in (0, 1)), address varchar2(200) not null, detail varchar2(1000) default ‘no detail‘, socre number(4,2) default null, primary key (userId)); /* --添加注释 -- comment on table users is ‘用户表‘; -- comment on column users.userId is ‘用户编号‘; -- comment on column users.userId is ‘0: female 1: male‘; --修改表中字段的默认值 alter table users modify (detail varchar2(1000) default (‘no detail‘)); alter table users modify (sex char(1) default 1 check (sex in (0, 1))); -- */
创建序列Sequence:
/* --创建序列Sequence create sequence seq_userId minvalue 100100 --最小值 nomaxvalue --不设置最大值(由机器决定),或 根据表字段的值范围设置 maxvalue start with 100100 --从1开始计数,数值可变 increment by 2 --每次加1,数值可变 nocycle --一直累加,不循环 nocache --不建缓冲区,如果建立cache那么系统将自动读取cache值 个seq,这样会加快运行速度;如果当机或oracle死了,那么下次读取的seq值将不连贯 */ create sequence seq_userId minvalue 100100 maxvalue 9999999999 start with 100100 increment by 1;
创建一个触发器来触发事件:每次insert操作时,自动生成一个sequence。
--创建触发器 create or replace trigger tg_insertUser before insert on users for each row when (new.userId is null) begin select seq_userId.Nextval into:new.userId from dual; end; --测试: insert into users (username, birthday, sex, address, socre) values (‘Oracle‘, to_date(‘1991-08-25 19:55:45‘, ‘yyyy-mm-dd hh24:mi:ss‘), 1, ‘ShangHai‘, 99.50);
标签:
原文地址:http://my.oschina.net/u/1757476/blog/497420