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
운영게시판
최근게시물
MS-SQL Q&A 4624 게시물 읽기
No. 4624
기본키 관련해서 궁금해서 올립니다.
작성자
김경호(ayukawa777)
작성일
2009-02-03 19:23ⓒ
2023-10-19 21:25ⓜ
조회수
6,225

안녕하세요. 반갑습니다.


기본키가 MAKE_DATE(VARCHAR(8)), SEQ(NUMERIC)


이렇게 되어 있습니다.


보통 클라이언트 프로그램에서


SELECT ISNULL(MAX(SEQ), 0) + 1 FROM TABLE


  WHERE MAKE_DATE = 오늘날짜;


요런식으로 가져와서 INSERT를 할텐데요.


예를들어서 다수의 클라이언트가 같은 테이블에 동시에 인서트를 한다면


거의 발생하지 않겠지만 SELECT해온 기본키가 중복되는 경우가 있을수 있지 않나 해서 입니다.


그럴 경우엔 물론 DB에서 기본키 중복 에러를 알려주면 스크립트 처리로 롤백해서 사용자가 다시


처리 하면 되겠지만


다른분들은 어떤 형식으로 사용하고 계신가 해서 궁금해서 문의 하여 봅니다.


아 그리고 위와 같은 복합키도 자동증가가 가능한지 궁금합니다. 좋은 하루 되세요 ^^



 

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

안녕하세요.혹 파워빌더모임 카페의 ....?  전 미르..


방법은 여러가지가 있을수 있는데 가장 쉬운것은 자동 증가를 키로 잡는게 아닐까 봅니다. 가장 확실한 


방법일것 같구요.  중복 걱정은 전여 없게 되니까요. 


물론 매출,매입등의 주문 번호는 별도(display ) 로 만들고 이부분은 기존 루틴을 그대로 쓰셔도 좋을것 


같구요...


저도 이번 재개발하면서 모든 관리 (메인과 서브) 테이블의 기본키를 전부 자동 증가번호(identify)를 해


서 만들었는데 만족합니다.  물론 화면(사용자)입장에서는 이번호는 의미가 없기때문에 별도의 번호를 만


들어 보여줍니다. 이것은 기본키가 아니니까 고민하실 필요는 없죠. 이런 display 키는 모두 default로 설


정 해 버렸습니다. 각 업무별 함수를 만들어 default 처리를 해버렸죠.  


기본키는 기본키이고 별도로 유니크한 인덱스를 잡을수 있으니까 보여주는 번호를 인데스로 잡으셔도 될


거구요..


지나가다가님이 2009-02-04 10:25에 작성한 댓글입니다. Edit

3tier 환경이 아니 c/s 환경일때는 기존 하시는 방식일때는


   프로그램의 로직상 완벽하게 중복을 배제할 수는 없을것 같구요.


1)  max값 셀렉트  ->  업데이트  하게 될때는 동시의 인서트 할때   중복발생 가능성이 높아지게 되죠.


2)  키테이블을 만들어서  사용하는 방법.

    

     . select  -> update   :  중복 발생가능

     . update -> select    :  중복 발생안함.  --> 기존 이방식을 사용.


3) 자동증가(identify)값 사용 --> 중복은 전혀 없음.

    . 다른 요인으로 인서트 실패시 증가값이 하나씩 띄어가는 증상 있음. 

      저장전 필수 컬럼의 검증이 필요 (당연한거지만요) 

  

1번은 동시에 저장이 이루어질때는 완벽한 중복배제는 어려울것 같네요. 

네트워크나 서버의 부하에 따라 발생도는 확연히 틀리거든요.  아주 깨끗한 상황 서버 성능 만빵 네트워


크 부하 전무 할때는 보통 말하는 확율이 거의 없지만  상태가 안좋아지면 자주 발생가능합니다.

지나가다가님이 2009-02-04 10:45에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4627MSSQL 간 연동 [1]
정인기
2009-02-05
7135
4626MSSQL 백업파일 복구 관련 질문입니다. [2]
2009-02-05
6533
4625서버프로그램에 대해 기초적인 질문 드립니다.
정명규
2009-02-04
5518
4624기본키 관련해서 궁금해서 올립니다. [2]
김경호
2009-02-03
6225
4623쿼리 질문입니다. [1]
ms 초보
2009-02-01
5440
4622검색 결과에 총 갯수와 검색 결과 갯수를 같이 나타내고 싶습니다. [1]
이원호
2009-01-30
5860
4621MS SQL 2000 복원시 일관성 문제 - 도와주세요 [1]
KSD
2009-01-30
5197
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다