Oracle使用从入门到放弃
常用SQL
- 主键自增长
--首先建一个表TEST create table BUSI_UPLOADINFO ( ID int PRIMARY KEY, ENENTTYPE int, EVNNTSUBTYPE INT, lAT number, lON number, INFO varchar2(100), UPLOADTYPE int, USERID Int, USERNAME varchar2(20), PHONE number, REMARK varchar2(100), REMARK1 varchar2(100), REMARK2 varchar2(100), ADDRESS VARCHAR2(100) ) / COMMENT ON TABLE BUSI_UPLOADINFO IS '业务表-上报事件表' / COMMENT ON COLUMN BUSI_UPLOADINFO.ID IS '主键' / COMMENT ON COLUMN BUSI_UPLOADINFO.ENENTTYPE IS '事件类型' / COMMENT ON COLUMN BUSI_UPLOADINFO.EVNNTSUBTYPE IS '事件子类型' / COMMENT ON COLUMN BUSI_UPLOADINFO.lAT IS '纬度' / COMMENT ON COLUMN BUSI_UPLOADINFO.LON IS '经度' / COMMENT ON COLUMN BUSI_UPLOADINFO.INFO IS '描述信息' / COMMENT ON COLUMN BUSI_UPLOADINFO.REMARK IS '备注' / COMMENT ON COLUMN BUSI_UPLOADINFO.REMARK1 IS '备用字段' / COMMENT ON COLUMN BUSI_UPLOADINFO.REMARK2 IS '备用字段' / COMMENT ON COLUMN BUSI_UPLOADINFO.USERNAME IS '用户信息' / COMMENT ON COLUMN BUSI_UPLOADINFO.INFO IS '描述信息' / COMMENT ON COLUMN BUSI_UPLOADINFO.REMARK IS '备注' / COMMENT ON COLUMN BUSI_UPLOADINFO.USERNAME IS '用户信息' / COMMENT ON COLUMN BUSI_UPLOADINFO.ADDRESS IS '地址信息' -- 建一个序列 create sequence SEQ_TEST minvalue 1 --最小值 nomaxvalue --不设置最大值 start with 1 --从1开始计数 increment by 1 --每次加1个 nocycle --一直累加,不循环 nocache; --不建缓冲区 -- 以上代码完成了一个序列(sequence)的建立过程,名称为SEQ_TEST,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!) 你只有了表和序列还不够,最好再建一个触发器来执行它!代码如下: CREATE OR REPLACE TRIGGER tg_test BEFORE INSERT ON test FOR EACH ROW WHEN (new.nid is null) begin select seq_test.nextval into:new.nid from dual; end;