oracle利用序列和触发器使字段自增

create table NET_TRANDATE_CHECK
(
  trandate_no VARCHAR2(80),
  check_date  VARCHAR2(80)
)


--- 序列 701开始 每次自增1

CREATE SEQUENCE SQ_NET_TRANDATE_CHECK
INCREMENT BY 1
START WITH  701
NOCYCLE
;


--- 触发器
CREATE OR REPLACE TRIGGER TG_NET_TRANDATE_CHECK
BEFORE INSERT ON NET_TRANDATE_CHECK
FOR EACH ROW
BEGIN
SELECT SQ_NET_TRANDATE_CHECK.NEXTVAL INTO :NEW.TRANDATE_NO FROM SYS.DUAL;
END
;








---插入日期


INSERT INTO NET_TRANDATE_CHECK (CHECK_DATE)
SELECT TMP.DATE1 
FROM
(
SELECT TO_CHAR(TO_DATE(20160101,'YYYYMMDD')+LEVEL-1,'YYYYMMDD') AS DATE1,
TO_CHAR(TO_DATE(20160101,'YYYYMMDD')+LEVEL-1,'D')  AS WEEK 
FROM DUAL CONNECT BY LEVEL <366
) TMP
WHERE TMP.WEEK IN (1,7)  ORDER BY TMP.DATE1 ASC 
;
COMMIT
;


SELECT * FROM NET_TRANDATE_CHECK 
;
posted @ 2015-12-21 15:00  Stepheng  阅读(60)  评论(0)    收藏  举报