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 하려고 하는데요
어떻게 하면 될까요? |