데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

binary파일 을 저장하는 테이블을 만들려고 하는게 이게 1:1 이 아니다 보니 데이터테이블 이름과 데이터테이블의 seq_no(identity)로


파일 저장테이블을 update 나 insert하려고 합니다.


제가 생각해놓은 프로시저가  아래와 같은데.. 문제점은 이렇게 IDENTITY를 가져옵니다.


  SET @SET_IDENTITY = (SELECT IDENT_CURRENT('CONT_CONTRACT'))   


새값을 입력하고   IDENTITY값져오기 중간에 IDENTITY값을 가져온 직후 다른유저가 새로운 열을 insert하면 identity의 값이 틀어지나요 아니면 실행시점 그대로 인가요?


1. identity 1값을 가진 열생성

2. 다른유저가 identity 2를 가진 열생성

3. 파일테이블에 identity 를 참조하여 열을 수정 가져옴(이때 1.3이 같은 프로시저 안에서실행되고 있습니다.)

    이때가져오는 identity는 프로시저 생성시점은 1값인가요? 아님 현재 값인 2의 값인가요?



ALTER PROCEDURE [dbo].[YCPKG_BSE010100_CONT_CONTRACT]
 @IN_SEQ_NO   NVARCHAR(MAX),
 @IN_WCODE        NVARCHAR(MAX),
 @IN_EMP_NO       NVARCHAR(MAX),
 @IN_CONT_DATE   NVARCHAR(MAX),
 @IN_CONT_EXPIR_DATE   NVARCHAR(MAX),
 @IN_CONT_NO   NVARCHAR(MAX),
 @IN_CONT_DESC   NVARCHAR(MAX),
 @IN_CONT_STATE  NVARCHAR(MAX),
 @IN_CONT_PERIOD   NVARCHAR(MAX),
 @IN_FILE_NAME   NVARCHAR(MAX),
 @IN_FILE_BINARY  varbinary(MAX),
 @IN_ID   NVARCHAR(MAX)

AS
BEGIN

DECLARE @IN_HID   NVARCHAR(MAX),
 @SET_IDENTITY int

 SET NOCOUNT ON;

 BEGIN TRAN

 SET @IN_HID = dbo.FN_GET_HID(@IN_WCODE, @IN_EMP_NO)
 

 MERGE INTO CONT_CONTRACT A USING (
 SELECT  @IN_SEQ_NO AS SEQ_NO ,
   @IN_HID  AS HID,
   @IN_CONT_DATE AS CONT_DATE,
   @IN_CONT_EXPIR_DATE  AS CONT_EXPIR_DATE,
   @IN_CONT_NO  AS CONT_NO,
   @IN_CONT_DESC  AS CONT_DESC,
   @IN_CONT_STATE AS CONT_STATE,
   @IN_CONT_PERIOD  AS CONT_PERIOD
  ) B ON (B.SEQ_NO = A.SEQ_NO)
 WHEN MATCHED THEN
  UPDATE SET
   HID   = B.HID,
   CONT_DATE   = B.CONT_DATE,
   CONT_EXPIR_DATE   = B.CONT_EXPIR_DATE,
   CONT_NO   = B.CONT_NO,
   CONT_DESC   = B.CONT_DESC,
   CONT_STATE   = B.CONT_STATE,
   CONT_PERIOD   = B.CONT_PERIOD,
   FIN_MDFY_DATE   = GETDATE(),
   FIN_MDFY_LID   = @IN_ID
 WHEN NOT MATCHED THEN
  INSERT ( HID, CONT_DATE, CONT_EXPIR_DATE, CONT_NO, CONT_DESC, CONT_STATE, CONT_PERIOD, REG_DATE, FIN_MDFY_DATE, REG_LID, FIN_MDFY_LID, DEL_YN)
  VALUES ( @IN_HID, @IN_CONT_DATE, @IN_CONT_EXPIR_DATE, @IN_CONT_NO, @IN_CONT_DESC, @IN_CONT_STATE, @IN_CONT_PERIOD, GETDATE(), GETDATE(), @IN_ID, @IN_ID, 'N');

 
 IF EXISTS ( SELECT COUNT(*) FROM CONT_CONTRACT WHERE SEQ_NO = @IN_SEQ_NO)
  BEGIN
   SET @SET_IDENTITY = @IN_SEQ_NO
  END
 ELSE
  BEGIN
   SET @SET_IDENTITY = (SELECT IDENT_CURRENT('CONT_CONTRACT'))  
  END

 IF EXISTS (SELECT COUNT(*) FROM FILE_REPOSITORY WHERE TABLE_NM = 'CONT_CONTRACT' AND TABLE_SEQ_NO = @SET_IDENTITY)
 BEGIN
  IF(@IN_FILE_BINARY != '')
   BEGIN
    UPDATE FILE_REPOSITORY
    SET [FILE_NAME] = @IN_FILE_NAME
     , FILE_BINARY = @IN_FILE_BINARY
     , FIN_MDFY_DATE = GETDATE()
     , FIN_MDFY_LID = @IN_ID
    WHERE TABLE_SEQ_NO = @SET_IDENTITY
   END
  ELSE
   BEGIN
    INSERT INTO FILE_REPOSITORY(TABLE_NM, TABLE_SEQ_NO, [FILE_NAME], FILE_BINARY, REG_DATE, FIN_MDFY_DATE, REG_LID, FIN_MDFY_LID, DEL_YN)
    VALUES ('CONT_CONTRACT', @SET_IDENTITY, @IN_FILE_NAME, @IN_FILE_BINARY, GETDATE(), GETDATE(), @IN_ID, @IN_ID, 'N');
   END
 END
 
 COMMIT TRAN

END


No. Subject Author Date Views
9552 어셈블리 문자열 저장 ㅠㅠ 꼴랑깔랑 2016.10.16 2243
9551 쿼리문 문의드립니다. [4] 꾹스 2016.10.14 2952
9550 엑셀에 있는 데이터로 DB를 변경하고싶습니다. [3] 인뱅 2016.10.14 2099
9549 sql 작성 조언 부탁드립니다 [1] 미키롱 2016.10.14 2301
9548 간단한 쿼리문의드립니다. [3] 후알유? 2016.10.14 1923
» identity로 생성된 seq_no를 가지고 다른테이블을 update하거나 insert할려고합니다. [5] 뽀구 2016.10.12 1984
9546 링크서버문의 [1] 큘러 2016.10.11 3280
9545 query 문의. [2] 다복이 2016.10.11 2291
9544 data 동시 수정 [2] 김영훈_281547 2016.10.11 2007
9543 PK 관련 문의 슬이슬이 2016.10.07 2486
9542 인덱스 번호 강제로 만드는 방법 혹시 있을까요? [2] neiyan 2016.10.06 2475
9541 그룹결과 중복 공백처리 쿼리 질문드립니다. [1] HoyaSoft 2016.10.05 3269
9540 오라클 2개의 컬럼 동시 중복 찾아내는 쿼리문이 궁금합니다. [2] 창영 2016.10.05 2226
9539 group by에 어려움이 있어요 도와주세요~~ [2] 제지니 2016.10.04 2113
9538 모든 테이블의 데이터를 insert쿼리로 가져오기 [2] 연금술사 2016.10.04 3123
9537 쿼리문 궁금한게 있습니다. ㅠㅠ [1] puffyteemo 2016.10.04 2514
9536 쿼리에 뭐가 문제인지 모르겠습니다.. [2] MSSQL초보입문자 2016.10.04 2456
9535 쿼리 좀 도와 주세요 [2] 이유진_301818 2016.10.04 2615
9534 시스템 데이터베이스 복구 관련하여 질문 있습니다. 방혁 2016.10.04 2021
9533 case when 사용시 집계 또는 하위 쿼리가 포함된 식에서는 집계 함수를 수행할 수 없습니다 [3] 냥냥 2016.10.03 6200





XE Login