dblink tl seq 를 자동증가 할때 ***.nextval
ORA-04054: 데이터베이스 링크 'HSCPROD.NEXTVAL'가 존재하지 않습니다
SELECT AAA_SEQ@hscprod.NEXTVAL
FROM DUAL; (X)
SELECT AAA_SEQ.NEXTVAL@hscprod
FROM DUAL (O)
SEQUENCE
CREATE TABLE T1(ID NUMBER(4) CONSTRAINT T1_PK PRIMARY KEY, DATA VARCHAR2(30));
PK에 대해 SEQUENCE를 줄수 있다. 입력시에 아래처럼. 테이블에 시퀀스 하나씩!
SQL> INSERT INTO T1 VALUES(T1_S.NEXTVAL, 'AA');
1 개의 행이 만들어졌습니다.
SQL> CREATE SEQUENCE T1_S;
시퀀스가 생성되었습니다.
SQL> SELECT * FROM T1;
ID DATA
---------- ------------------------------
1 AA
2 BB
세션마다 CURRVAL은 다르지만, NEXTVAL은 같다. 세션에서 NEXTVAL을 사용하게 되면 하나씩 올라가게 된다..
GAP이 생기면 시퀀스를 쓰지 말아야 하는거죠. 시퀀스대신 SELECT MAX(ID)+1 처럼 해야 된다. <- LOCK이 걸릴수 있기때문에 쓰지 마라.
ISQL에서는 트랜젝션이 있으니까 상관없긴 하다.
1 CREATE SEQUENCE DEPT_S
2 INCREMENT BY 10
3* START WITH 10
SQL> /
시퀀스가 생성되었습니다.
SQL> SELECT DEPT_S.NEXTVAL FROM DUAL;
NEXTVAL
----------
10
SQL> SELECT DEPT_S.NEXTVAL FROM DUAL;
NEXTVAL
----------
20
3,5,2,4,6,2,4,6 으로 증가하게 하려면?
SQL>
1 CREATE SEQUENCE TS
2 INCREMENT BY 2
3 START WITH 3
4 MAXVALUE 6
5 MINVALUE 2
6* CYCLE NOCACHE
시퀀스가 생성되었습니다.
SQL> SELECT TS.NEXTVAL FROM EMP;
NEXTVAL
----------
3
5
2
4
6
2
4
6
2
4
6
NEXTVAL
----------
2
4
6
14 개의 행이 선택되었습니다.