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
(
  seq           number,
  TITLE    VARCHAR2(100 BYTE),
  CONTENT  CLOB
)

 

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를 없앤다.

'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

+ Recent posts