SNOWFLAKES DRAWING PAPER

[Oracle] 자동증가 Sequence 본문

개발/Oracle/SQL/ERD

[Oracle] 자동증가 Sequence

눈송2 2011. 10. 6. 11:24

오라클 시퀀스 생성(자동증가)
create sequence test_seq;
CREATE OR REPLACE TRIGGER test_trigger BEFORE INSERT ON CD_POST_NO FOR EACH ROW
BEGIN
SELECT test_seq.NEXTVAL INTO :new.seq FROM dual;
END;






unique key를 생성하는 방법은 DBMS마다 차이가 있다. MS-SQL은 IDENTITY를, MySQL은 auto_increment와 같이 쉽게 사용할 수 있는 방법이 있는데 오라클에서는 다음과 같이 유사하게 구현할 수 있다.

SQL> create table t (
2 seqno number primary key,
3 id varchar(10),
4 name varchar(10));

테이블이 생성되었습니다.

SQL> create sequence t_seq;

주문번호가 생성되었습니다.

SQL> CREATE OR REPLACE TRIGGER t_trigger BEFORE INSERT ON t FOR EACH ROW
2
3 BEGIN
4 SELECT t_seq.NEXTVAL INTO :new.seqno FROM dual;
5 END;
6 /

트리거가 생성되었습니다.

seqno컬럼에 무엇을 지정하던(물론 t_seq.nextval는 사용하면 안된다.) 영향을 끼치지 못한다. t_seq.nextval만이 값으로 들어간다.
SQL> insert into t values(NULL, 'maddog','홍길동');

1 개의 행이 만들어졌습니다.

SQL> INSERT INTO T(ID, NAME) VALUES('MADDOG','홍길동');

1 개의 행이 만들어졌습니다.

SQL> select * from t;

SEQNO ID NAME
---------- ---------- ----------
1 maddog 홍길동
2 MADDOG 홍길동

'개발 > Oracle/SQL/ERD' 카테고리의 다른 글

Tadpole DB Hub - 웹 스타일 DB Client  (0) 2016.04.18
DB 클라이언트 툴  (0) 2014.09.30
[Oracle] 오라클 -> MySQL로 전환  (0) 2011.10.05
[Oracle] 오라클 dump export  (0) 2011.10.05
[SQL] MySQL case when  (0) 2009.04.19
Comments