Oracle SEQUENCE Vs Mysql AUTO_INCREMENT
DB/Oracle
2008. 7. 22. 14:08
반응형
Oracle SEQUENCE Vs Mysql AUTO_INCREMENT
우선 테이블을 생성해 보자
더보기
CREATE TABLE `BOARD` (
`SEQ` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(10) NOT NULL,
`PWD` varchar(10) NOT NULL,
`TITLE` varchar(30) NOT NULL,
`CONTENT` mediumtext NOT NULL,
PRIMARY KEY (`B_ID`)
)
`SEQ` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(10) NOT NULL,
`PWD` varchar(10) NOT NULL,
`TITLE` varchar(30) NOT NULL,
`CONTENT` mediumtext NOT NULL,
PRIMARY KEY (`B_ID`)
)
더보기
CREATE TABLE BOARD
(
SEQ NUMBER PRIMARY KEY ,
NAME VARCHAR2(12 BYTE) NOT NULL,
PWD VARCHAR2(12 BYTE) NOT NULL,
TITLE VARCHAR2(50 BYTE) NOT NULL,
CONTENT VARCHAR2(4000 BYTE) NOT NULL
)
(
SEQ NUMBER PRIMARY KEY ,
NAME VARCHAR2(12 BYTE) NOT NULL,
PWD VARCHAR2(12 BYTE) NOT NULL,
TITLE VARCHAR2(50 BYTE) NOT NULL,
CONTENT VARCHAR2(4000 BYTE) NOT NULL
)
Mysql 은 AUTO_INCREMENT 를 함수를 활용하여 자동으로 변수값을 증가 시킬수가 있었다.
Oracle 에는 이런 간단한 방법을 사용할수 없기에 Sequence를 만들어서 추가를 해야 한다.
만들어 보자..
더보기
CREATE SEQUENCE BOARD_TEST_SEQ
START WITH 1 -- 시작번호
INCREMENT BY 1 -- 증가값
MAXVALUE 99999 -- 최대값
MINVALUE 1 -- 최소값 지정안해도 무관
CACHE 2 -- 시쿼스 변경시 자주 update되는 것을 방지하기위한 캐시값
NOCYCLE;
- 다음 일련번호의 산출 > BOARD_TEST_SEQ.NextVal
- 현재 일련번호의 산출 > BOARD_TEST_SEQ.CurrVal
START WITH 1 -- 시작번호
INCREMENT BY 1 -- 증가값
MAXVALUE 99999 -- 최대값
MINVALUE 1 -- 최소값 지정안해도 무관
CACHE 2 -- 시쿼스 변경시 자주 update되는 것을 방지하기위한 캐시값
NOCYCLE;
- 다음 일련번호의 산출 > BOARD_TEST_SEQ.NextVal
- 현재 일련번호의 산출 > BOARD_TEST_SEQ.CurrVal
Use NextVal, CurrVal Query
당연한 것이겠으나.. nextval, currval의 사용(불)가능 Query 구분
사용가능
- 서브쿼리가아닌 select문
- insert의 select 문
- insert의 value문
- update문의 set절
사용불가
- view의 select절
- distinct 키워드가 있는 select 문
- group by, having, order by 절이 있는 select문
- select, delete, update의 subquery
- create table, alter table 명령의 default값
사용가능
- 서브쿼리가아닌 select문
- insert의 select 문
- insert의 value문
- update문의 set절
사용불가
- view의 select절
- distinct 키워드가 있는 select 문
- group by, having, order by 절이 있는 select문
- select, delete, update의 subquery
- create table, alter table 명령의 default값
데이터를 입력해보자~
더보기
[Mysql]
INSERT INTO
BOARD ( seq, name, pwd, title, content)
VALUES (null, '11','11','11','11')
[Oracle]
INSERT INTO
BOARD ( seq, name, pwd, title, content)
VALUES (BOARD_TEST_SEQ.NextVal, '11','11','11','11')
INSERT INTO
BOARD ( seq, name, pwd, title, content)
VALUES (null, '11','11','11','11')
[Oracle]
INSERT INTO
BOARD ( seq, name, pwd, title, content)
VALUES (BOARD_TEST_SEQ.NextVal, '11','11','11','11')
반응형