Background Image
조회 수 35690 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
일련번호 만들기
일련 번호를 가지는 필드의 값에 기존 값에 1을 증가시켜 새로운 값으로 입력하고자 할 때 select max(필드값) 을 얻어 그 값이 1을 더하는 방법을 사용하기도 합니다. 하지만 이는 max() 연산으로 인해 성능에 좋지 않은 결과를 가져오므로 많이 사용하지 않습니다. 대신 serial 개체를 사용하여 해당 필드의 값을 입력합니다. 그런데 serial 개체는 하나씩 증가된 번호를 가져올 수는 있으나 사용할 때 조금 복잡해 지니 [insert into(seqno, ...) values(serial.next_value, ...)] 좀 더 편리한 방법을 사용하고자 자동증가 속성을 사용합니다.

자동증가 속성
자동증가 속성은 지정한 필드의 값이 데이터가 입력될 때 마다 자동적으로 증가되도록 하기 위해 사용하는 속성입니다. 예를 들면, 아래와 같은 테이블에서 bbs_no 필드의 값이 레코드가 하나 입력될 때 마다 그 필드의 값이 자동적으로 하나씩 증가가 됩니다. 해당 필드의 값을 사용자가 입력하지 않아도 기존 값에 대해 자동으로 하나 증가된 값이 해당 필드의 값으로 입력되는 것입니다.
create table bbs (
    bbs_no int auto_increment,
    bbs_title char(10)
)
데이터를 입력 후 [ insert into bbs(bbs_title) values(‘제목1’) ], 검색해 보면 [ select bbs_no, bbs_title from bbs ] 결과가 [ 1, ‘제목1’ ] 로 bbs_no ] 에 자동으로 1이 들어간 것으로 볼 수 있습니다.
다시한번 입력하고 [ insert into bbs(bbs_title) values(‘제목2’) ], 검색해 보면 [ select bbs_no, bbs_title from bbs ] 결과가 [ 2, ‘제목2’ ] 로 이번에는 bbs_no 에 2의 값이 들어간 것을 볼 수 있습니다.

이와 같이 자동증가되는 필드에 대하여 1부터 시작하지 않고, 특정값부터 시작하도록 시작값을 지정할 수 있으며, 또한 증가되는 값 역시 지정하여 특정 값만큼 증가되도록 할 수 있습니다. 예를 들면 11부터 시작해서 2씩 증가되도록 할 수도 있습니다. 아래는 그 예입니다.
create table bbs2 (
    bbs_no int auto_increment(11, 2),
    bbs_title char(10)
)

자동증가 값 관리
자동 증가되는 필드의 값은 그 값을 자동적으로 증가시키기 위해 별도로 관리하며, serial 개체를 이용하여 관리를 하고 있습니다. 이때 만들어지는 serial 개체의 이름은 <테이블이름>_ai_<필드명>의 구조를 가지고 있습니다.
앞의 예에서와 같이 bbs 라는 테이블에 bbs_no 가 자동증가 속성을 가지고 있을때, 이 자동증가 값을 가지는 serial 개체의 이름은 bbs_ai_bbs_no 입니다.

자동증가 필드의 현재값 얻기
자동증가 속성을 가진 필드에 대하여 현재 값을 얻고자 할 때, 즉 해당 필드 값이 얼마까지 증가되었는지는 간단히 확인할 수 있습니다. 앞서 설명하였듯이 serial 개체를 이용하여 값을 관리하고 있으므로 serial 개체의 현재값을 구하는 방식으로 자동증가 속성 필드의 현재값을 얻을 수 있습니다. 앞의 예에서 bbs 테이블에 대하여 bbs_no 의 현재값은 아래와 같이 간단히 구할 수 있습니다.
select bbs_ai_bbs_no.current_value from db_root

자동증가 필드에 사용자 임의의 값 입력
아울러 자동증가 속성을 가진 필드에 대하여 사용자가 임의의 값을 입력하는 것을 허용합니다. 이때 그 값은 자동증가 값이 관리되고 있는 serial 개체의 값과는 무관합니다. 따라서 unique 속성이 없다면 이미 자동증가에 의해 입력된 값을 사용자가 입력하거나, 아직 증가되지 않은 값을 입력할 수 있습니다.
앞의 예에서 bbs_no 가 2까지 입력되어 있었는데 사용자가 2를 또 입력하거나 10을 입력하거나 하는 것이 허용됩니다.
insert into bbs(bbs_no, bbs_title) values(2, ‘제목 22’)
insert into bbs(bbs_no, bbs_title) values(10, ‘제목 10’)

자동증가 값은 2까지 증가되어 있으므로 일반적인 방법으로 다시 입력 [ insert into bbs(bbs_title) values(‘제목3’) ] 하면 그때는 하나 증가된 3이 입력됩니다. 이와 같이 입력되다 보면 사용자가 임의로 입력한 10이 자동증가로 다시 입력될 수 있습니다.
이러한 중복 입력을 막기 위해서는 우선 해당 필드에 unique 속성을 부여하는 것이 좋습니다. 그러나 사용자에 의한 임의의 값이 입력되는 것은 막지 않기 때문에 여전히 주의할 필요가 있습니다. unique 속성 부여를 통한 최소한 중복된 값이 입력되는 것은 막을 수 있습니다.

자동증가 필드에 임의의 값 입력 후 자동증가 값에 반영
사용자가 입력한 임의의 자동증가 필드에 대한 값은 자동증가 값이 저장된 serial 개체에 반영되지 않아 값이 중복될 가능성을 내포하고 있습니다. 따라서 해당 필드를 포함하여 일련의 데이터를 입력하고 난 후에는 반드시 자동증가 값을 가지고 있는 serial 개체의 값을 변경시켜 주어야 합니다. 자동증가 값을 사용자가 입력한 값들 중에서 최대값으로 변경하여 주면 자동증가되는 값이 사용자가 입력한 값과 중복되지 않기 때문입니다.
질의를 통하여 간단히 최대 값을 얻은 후 [ select max(bbs_no) from bbs ], serial 개체의 현재값을 변경하는 질의를 통해 자동증가 값을 변경합니다. (그 값이 20000이라고 가정하면)
alter serial bbs_ai_bbs_no start with 20000
주의할 점은 자동증가에 대하여 자동으로 값이 입력된 적이 한번도 없다면 start with 20001 로 해주어야 합니다.

이는 일반적으로 권장하는 방법은 아니며, 해당 필드는 자동증가를 설정했으므로 해당 필드를 제외하고 입력하여, 해당 필드에는 자동적으로 값이 부여되도록 하는 것이 좋습니다.
TAG •

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
166 기타 [10.2 path] - 생성된 view구문을 'show create view' 수행 시 정상적으로 출력되지 않던 이슈 patch 큐브리드_김주현 2020.11.09 889
165 기타 큐브리드10.1 에서 윤초 지원 옵션 사용하기 최광일 2017.09.13 1419
164 Linux <주의> 생성한 DB볼륨을 절대! 삭제하지 말자 큐브리드_김주현 2019.09.30 1600
163 Install [linux] wget으로 제품 다운로드 시 "wget: unable to resolve host address ‘ftp.cubrid.org’" 해결방 큐브리드_김주현 2021.07.02 2267
162 기타 ERwin을 이용한 CUBRID 포워드 엔지니어링 file 민순 2020.07.14 2316
161 기타 따라하면 쉬운 compactdb 사용법 file 허서진 2017.07.01 2529
160 기타 ERwin을 이용한 CUBRID 리버스 엔지니어링 file 민순 2020.07.13 3464
159 Java JDBC를 사용한 다중화 구성 SELECT Query 부하 분산 가이드 file 윤준수 2017.03.30 3947
158 튜닝 다중컬럼 조건에 대한 인라인뷰 처리방안 2 박동윤 2016.12.27 6012
157 기타 PyCharm을 이용한 CUBRID, Django 연동 가이드 file 진우진 2016.04.11 8152
156 Java CUBRID에서 Java AddBatch 사용 엄기호 2016.06.28 8365
155 기타 CUBRID Migration Toolkit을 이용한 단계별 마이그레이션 진행 방법 file 진우진 2015.12.15 9543
154 PHP CUBRID HA 환경에서 Apache-PHP 설정 가이드 이용미 2015.06.16 10665
153 기타 CUBRID isolation level & Dirty Read 정만영 2015.05.29 11314
152 기타 알고 보면 쉬운 cubrid lockdb 유틸리티 file 김승훈 2015.12.08 12079
151 Windows Windows 에 설치 된 JRE 설치 위치 확인 하기. file 성진 2015.05.28 12572
150 기타 데이터 확인에 정규표현식을 사용 해 보자. 성진 2016.03.01 12759
149 기타 CUBRID 2008 R4.0 파라미터 변경 사항 (일부) file admin 2011.07.14 13154
148 Linux 가상머신 환경에서 리눅스 및 큐브리드 설치 가이드 file 이경오 2015.07.14 13401
147 기타 콘솔에서 마이그레이션 하기. file 권호일 2015.06.19 13433
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales