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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 1159
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1672
9556 sp에서 테이블명을 바꿔가면 호출할수 있는 좋은 방법이 있을까요?? [2] mokee 2016.10.18 3666
9555 DB서버 이전 [4] 장성원_305526 2016.10.17 3042
9554 조인성능 질문드립니다. [4] 독고탁11 2016.10.17 2888
9553 쿼리 질문 드립니다. [1] 귤귤귤 2016.10.17 2901
9552 어셈블리 문자열 저장 ㅠㅠ 꼴랑깔랑 2016.10.16 2269
9551 쿼리문 문의드립니다. [4] 꾹스 2016.10.14 3058
9550 엑셀에 있는 데이터로 DB를 변경하고싶습니다. [3] 인뱅 2016.10.14 2140
9549 sql 작성 조언 부탁드립니다 [1] 미키롱 2016.10.14 2341
9548 간단한 쿼리문의드립니다. [3] 후알유? 2016.10.14 1957
» identity로 생성된 seq_no를 가지고 다른테이블을 update하거나 insert할려고합니다. [5] 뽀구 2016.10.12 2057
9546 링크서버문의 [1] 큘러 2016.10.11 3325
9545 query 문의. [2] 다복이 2016.10.11 2326
9544 data 동시 수정 [2] 김영훈_281547 2016.10.11 2064
9543 PK 관련 문의 슬이슬이 2016.10.07 2526
9542 인덱스 번호 강제로 만드는 방법 혹시 있을까요? [2] neiyan 2016.10.06 2495
9541 그룹결과 중복 공백처리 쿼리 질문드립니다. [1] HoyaSoft 2016.10.05 4081
9540 오라클 2개의 컬럼 동시 중복 찾아내는 쿼리문이 궁금합니다. [2] 창영 2016.10.05 2512
9539 group by에 어려움이 있어요 도와주세요~~ [2] 제지니 2016.10.04 2159
9538 모든 테이블의 데이터를 insert쿼리로 가져오기 [2] 연금술사 2016.10.04 3162
9537 쿼리문 궁금한게 있습니다. ㅠㅠ [1] puffyteemo 2016.10.04 2554





XE Login