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 4330 게시물 읽기
No. 4330
동시성에 대한 질문..
작성자
이승배
작성일
2002-09-04 18:37
조회수
1,017

만약 AB테이블의 정수값을 하나씩 증가해서

BC의 프라이머리 정수값으로 넣어줘야 한다면

 

SELECT MAX(idx_ab) FROM AB

를 해서

INSERT INTO BC VALUES([MAX(idx_ab])

이런식으로 할 수 있을것 같은데요.

 

사용자가 너무 많다면 여러 사람이 똑같은 MAX(idx_ab)를 갖게 되고

결국에는 INSERT문에서 겹치게 될것 같습니다.

 

이때 MAX(idx_ab)를 하고

INSERT 시킬때 다른 사람이 그 다음 값을 선택하도록 할 수 있는 방법이 있나요?

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

그때는 그렇게 max() 함수를 이용하는 것이 아니고, sequence 를 사용해야 합니다. 동시성 문제는 물론 해결됩니다. 메뉴얼을 읽어 보시던지 또는 이곳에서 sequence 로 검색해 보시기 바랍니다.

정재익(advance)님이 2002-09-05 21:27에 작성한 댓글입니다.

답변 감사한데요..

문제는..

MAX(idx_ab)만 키가 되는게 아니고

이걸 [날짜][MAX(idx_ab)]를 조합해서 키를 만들려고 하거든요.

 

DB에서 뭔가 지원을 해준다고 하는데..

이승배님이 2002-09-06 11:32에 작성한 댓글입니다.

다중사용자에 사용하실려면 트랜잭션을 사용하십시오.

 

그리고 상황설명을 잘 할수록 원하는 답을 빠르게 얻을 수 있다고 봅니다.

송동수(namsanmo)님이 2002-09-06 12:45에 작성한 댓글입니다.

질문의 답은 전통적으로 sequence를 사용하는 것입니다. 몇몇 분들은 그 "일련번호"를 table lock 방식을 사용한 응용프로그램에서 처리하기도 하는데, RDBMS에서는 시퀀스라는 아주 깔끔한 "일련번호"시스템이 있습니다. 이것이 Primary Key가 되고, 이것 기준으로 자료구조가 구축되는 것이 전통적인 방식입니다. PostgreSQL의 시퀀스 시스템은 아주 오래전부터 깔끔했습니다. :)

김상기(ioseph)님이 2002-09-24 10:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4333질문]PGAdmin 설치 과정중에 에러메세지가 뜨네요.
강성원
2002-09-06
1091
4332[왕초보질문] restore를 하는 방법좀 알려 주세요 [1]
김도환
2002-09-05
1128
4331jdbc로 blob 객체를 저장하려는데요..
pinkinsky
2002-09-04
923
4330동시성에 대한 질문.. [4]
이승배
2002-09-04
1017
4329[잡담]PostgreSQL 에 조금 실망 [3]
정회민
2002-09-04
1447
4328Importing from FileMaker to PostgreSQL on Mac OS X [1]
ManhoKim
2002-09-04
1143
4323테이블에서 컬럼 삭제 할려고 하는데 ... [2]
박기원
2002-09-03
917
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다