WHS GIS Engineer

Oracle使用从入门到放弃

2017-09-14
WHS
DB

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;

Comments