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
운영게시판
최근게시물
Oracle Q&A 37881 게시물 읽기
No. 37881
INSERT ~ SELECT 구문에서 INSERT 할 때 PK를 지정할 수 있을까요?
작성자
용세중(sjydevil)
작성일
2010-08-20 15:25
조회수
2,989

DECLARE @NextSeq INT;
 SELECT  @NextSeq = CASE ISNULL(MAX(IF_ID),0) 
                                       WHEN 0 THEN 1 
                                       ELSE MAX(IF_ID) + 1
                                  END
 FROM IF_SAMPLE_MES;

  INSERT INTO IF_SAMPLE_MES
 (    IF_ID
  ,   IF_IUD
  ,   IF_NAME
  ,   MATERIAL_TYPE
  ,   BATCH_NUM
  ,   MANU_DATE
  ,   EXP_DATE
  ,   REQ_DATE
  ,   REQ_NUM 
  ,   ORD_NUM
  ,   REQ_STEP
  ,   REQ_STEP_CODE 
 )
 SELECT  @NextSeq
  ,   'I'
  ,   IF_NAME
  ,   MATERIAL_TYPE
  ,   BATCH_NUM
  ,   MANU_DATE
  ,   EXP_DATE
  ,   REQ_DATE
  ,   REQ_NUM 
  ,   ORD_NUM
  ,   REQ_STEP
  ,   REQ_STEP_CODE 
 FROM HDP_CUSTDB.dbo.HDP_LIMS_REQUEST
 WHERE IF_RSLT_CODE = 'NA' OR IF_RSLT_CODE = 'NG';

 위와 같이 했을 때

 SELECT  @NextSeq
  ,   'I'
  ,   IF_NAME
  ,   MATERIAL_TYPE
  ,   BATCH_NUM
  ,   MANU_DATE
  ,   EXP_DATE
  ,   REQ_DATE
  ,   REQ_NUM 
  ,   ORD_NUM
  ,   REQ_STEP
  ,   REQ_STEP_CODE
  ,   IF_RQST_DATE
  ,   IF_RSLT_DATE
  ,   IF_RSLT_CODE
 FROM HDP_CUSTDB.dbo.HDP_LIMS_REQUEST
 WHERE IF_RSLT_CODE = 'NA' OR IF_RSLT_CODE = 'NG';

 의 결과가 1개 인경우에는 잘 INSERT 가 됩니다.

 그런데 2개 이상의 결과가 나오면 에러를 발생시키게 됩니다. 당연히 PK가 중복이 되니까요?

 즉 INSERT ~ SELECT에서 SELECT 의 행 수가 2개 이상인 경우에

 Primary Key를 지정해서 INSERT 하려고 하는데요

 어떻게 하면 될까요?

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

질문 카테고리를 잘못 선택하신것 아닌가요? 오라클이 아닌듯 하네요.

SELECT @NextSeq = @NextSeq + 1

마농(manon94)님이 2010-08-20 17:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
37884오늘 마지막 시간가져오기
박주현
2010-08-23
3083
37883맨 아랫 Row에 비율 나타내기.. [5]
아폴론
2010-08-20
3891
37882이건 오라클 버그인건가요? [2]
류신
2010-08-20
2679
37881INSERT ~ SELECT 구문에서 INSERT 할 때 PK를 지정할 수 있을까요? [1]
용세중
2010-08-20
2989
37880쿼리 속도 개선 및 DataSet 의 검색속도개선점
아이오
2010-08-20
2748
37879삭제 후 commit 데이터 복구관련 질문 드립니다. [2]
빛을타고
2010-08-20
2953
37878특정기간동안 기준일자가 포함되었는지 학인하는 sql은 어떻게.. [2]
염정훈
2010-08-20
2950
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다