MS-SQL에서 테이블 생성시 자동증가할수 있는 명령어가 있습니다.
근데 오라클은 없냐고 반문하시면 비슷하게 한번 만들어 보겠습니다.
아래와 같이 SEQUENCE 를 생성하고 인서트할때 시퀀스명.NEXTVAL을 이용하면 됩니다.
1. SEQUENCE 생성
create sequence autonum
increment by 1 -- 1씩 증가하라는거고요
start with 1 -- 1부터 시작이고요 100 시작할려면 100 이라고 쓰시면 됩니다.
nomaxvalue -- 최대값 제한이 없다
nocycle
nocache;
DEFAULT VALUE를 이용할려고 했는데 이것도 안됩니다.
create table test(num number default autonum.nextval, name varchar2(10));
1행에 오류:
ORA-00984: 열을 사용할 수 없습니다
2. TABLE 생성
create table test(num number, name varchar2(10));
3. 자동증가값 생성
입력시 다음과 같이 해주시면 됩니다.
insert into test (num) values (autonum.nextval);
조회 해보면 1 값이 들어가 있습니다.
select * from test
NUM NAME
---------- ----------
1
삭제는 drop sequence autonum; 이렇게 하시면 됩니다.
유의할 사항은 시퀀스명.Nextval 하면 전에 값으로 되돌릴수 없습니다.
현재값은 시퀀스명.CurrVal 로 조회 하시면 됩니다.
select 시퀀스명.currval from dual;
CREATE TABLE CLOB_TEST CREATE SEQUENCE no INCREMENT BY 1 START WITH 1 nomaxvalue --1부터 1씩 무한대로 증가 한다. --no로 시퀀스를 만들어 준다. insert into clob_test(seq) values(no.nextval) -- 인서트 할시 seq 컬럼에 no의 시퀀스값을 넣어 준다. DROP SEQUENCE no --시퀀스 no를 없앤다.
(
seq number,
TITLE VARCHAR2(100 BYTE),
CONTENT CLOB
)
'Databases' 카테고리의 다른 글
시퀸스 sequence (0) | 2009.07.13 |
---|---|
테이블 삭제 DROP TABLE (0) | 2009.07.13 |
mysql에 DB생성 및 사용자 추가하기 (2) | 2009.06.30 |
ALTER SCHEMA (0) | 2009.06.27 |
SQL 데이터베이스 개체 디버깅 (0) | 2009.01.22 |