oracle利用序列和触发器使字段自增
create table NET_TRANDATE_CHECK
(
trandate_no VARCHAR2(80),
check_date VARCHAR2(80)
)
--- 序列 701开始 每次自增1
CREATE SEQUENCE SQ_NET_TRANDATE_CHECKINCREMENT 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
;

浙公网安备 33010602011771号