database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 8602 게시물 읽기
No. 8602
시퀸스 값 조작 방법에 대해서
작성자
souler(souler)
작성일
2010-01-15 21:23
조회수
7,589

시퀸스(시리얼) 값을 조작할 수 있나요?

예를 들어서, 제품이 하나하나 입력될 때 마다, 제품의 번호를 메기는 시리얼 컬럼이 있다고 하면

증분값이 1로써 순차적으로 1, 2 3.... 증가하다가 제품 3번이 삭제되고 다른제품이 추가 되면

1, 2, 4, 5, 6 ..... 처럼, 중간에 삭제된 3이 사라지고 2 다음에 바로 4가 나오게 되는데

이때 제품이 삭제되면 시퀸스 값을 -1 해서 3부터 다시 채워지도록, 그러니까 시퀸스가 항상

일정하게 증가? 될 수 있도록 할 수 있게 하려면 어떤 식으로 해야할까요!?

이 글에 대한 댓글이 총 3건 있습니다.

 그렇게는 불가능한걸로 알고있습니다.

그렇게 하고싶으시면 SP를 만드셔서 처리하시거나 delete를 삭제하지마시고 flag를 설정하신후 

쿼리로서 처리 하시는게 맞을것 같습니다.

김병석(byung82)님이 2010-01-18 13:40에 작성한 댓글입니다.

맞습니다.

시퀀스의 개념상 어떤 DBMS 던지 뒤로 되돌리는 일은 할 수 없습니다.

오로지 현재값과 다음 값만을 불러올 수 있습니다.

중간에 이빨 빠진 값이 싫으시다면,

최종 값을 관리하는 별도의 테이블(1 row 짜리)을 두고

대상 테이블에 트리거 형태로 삭제시 -1 로 업데이트 해주는 방식을 사용하셔야 합니다.

단, 이 경우 데이터 경합에 의한 중복 값이 사용 될 수 있으므로

explicit-locking 을 트랜잭션 내에 포함하셔야 합니다.

또는, max(대상컬럼)+1 값을 증분 값으로 사용하는 방법도 있지요. ~_~

정책에 따라 적당한 것을 사용하시면 됩니다.

 

 

SHK(rusion)님이 2010-01-18 13:47에 작성한 댓글입니다.

답변 해주신 두분에게 감사하다는 말씀을 드립니다.

알려주신 내용을 토대로, 조금 더 알아보아 실질적인 구현을 할 수 있도록 노력해야겠군요!

souler(souler)님이 2010-01-19 17:59에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8605DB의 최대 사이즈를 지정할 수 있나요? [2]
김대청
2010-01-21
7364
8604SQL툴에서 해당 DB연결되어 있을 때, libpq에서의 추가연결 [5]
심미선
2010-01-20
7454
8603급하게 사람을 구합니다 [3]
XXX
2010-01-16
7776
8602시퀸스 값 조작 방법에 대해서 [3]
souler
2010-01-15
7589
8601쿼리 실행시 에러가 나서요.. [1]
Wufniks
2010-01-14
7744
8600고수님들 살려주세요..ㅠㅠ [1]
이진영
2010-01-12
9241
8599[질문] <IDLE> in transaction 해결할 수 있을까요??
초보가
2010-01-11
8171
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다