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
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 124
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 24
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
9553 쿼리 질문 드립니다. [1] 귤귤귤 2016.10.17 2888
9552 어셈블리 문자열 저장 ㅠㅠ 꼴랑깔랑 2016.10.16 2264
9551 쿼리문 문의드립니다. [4] 꾹스 2016.10.14 3015
9550 엑셀에 있는 데이터로 DB를 변경하고싶습니다. [3] 인뱅 2016.10.14 2122
9549 sql 작성 조언 부탁드립니다 [1] 미키롱 2016.10.14 2320
9548 간단한 쿼리문의드립니다. [3] 후알유? 2016.10.14 1947
» identity로 생성된 seq_no를 가지고 다른테이블을 update하거나 insert할려고합니다. [5] 뽀구 2016.10.12 2026
9546 링크서버문의 [1] 큘러 2016.10.11 3309
9545 query 문의. [2] 다복이 2016.10.11 2300
9544 data 동시 수정 [2] 김영훈_281547 2016.10.11 2038
9543 PK 관련 문의 슬이슬이 2016.10.07 2510
9542 인덱스 번호 강제로 만드는 방법 혹시 있을까요? [2] neiyan 2016.10.06 2486
9541 그룹결과 중복 공백처리 쿼리 질문드립니다. [1] HoyaSoft 2016.10.05 3498
9540 오라클 2개의 컬럼 동시 중복 찾아내는 쿼리문이 궁금합니다. [2] 창영 2016.10.05 2396
9539 group by에 어려움이 있어요 도와주세요~~ [2] 제지니 2016.10.04 2137
9538 모든 테이블의 데이터를 insert쿼리로 가져오기 [2] 연금술사 2016.10.04 3148
9537 쿼리문 궁금한게 있습니다. ㅠㅠ [1] puffyteemo 2016.10.04 2542
9536 쿼리에 뭐가 문제인지 모르겠습니다.. [2] MSSQL초보입문자 2016.10.04 2481
9535 쿼리 좀 도와 주세요 [2] 이유진_301818 2016.10.04 2632
9534 시스템 데이터베이스 복구 관련하여 질문 있습니다. 방혁 2016.10.04 2071





XE Login

테스트 팝업
Close