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 42858
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22726
9563 데이블 업데이트 못하게 하는 조건문 이나 제약조건 설정 방법 조언좀 바랍니다 [4] 배우미 2016.10.20 4151
9562 서버 교체하여 사용하려고 보니.. 약 20~30대 정도 접속하니... 쿼리가 실행이 않되네요.. [2] 랜덤의세계 2016.10.20 3316
9561 쿼리창 한글문제 [1] Molly75 2016.10.20 2437
9560 오라클 쿼리문 한번 봐주시고 조언좀 부탁드려요~ [1] karyaladin 2016.10.20 3038
9559 ETL 관련 데이터변환관련 Best Practice 문의 [1] Sean 2016.10.19 2844
9558 오라클 작업을 해야 하는데 모르겠네요 [4] 아싸라비아콜롬비아 2016.10.19 3073
9557 ssms 사용자 데이터베이스만 보이게 하는방법 [1] 싱송 2016.10.19 4051
9556 sp에서 테이블명을 바꿔가면 호출할수 있는 좋은 방법이 있을까요?? [2] mokee 2016.10.18 3725
9555 DB서버 이전 [4] 장성원_305526 2016.10.17 3085
9554 조인성능 질문드립니다. [4] 독고탁11 2016.10.17 2943
9553 쿼리 질문 드립니다. [1] 귤귤귤 2016.10.17 2934
9552 어셈블리 문자열 저장 ㅠㅠ 꼴랑깔랑 2016.10.16 2328
9551 쿼리문 문의드립니다. [4] 꾹스 2016.10.14 3124
9550 엑셀에 있는 데이터로 DB를 변경하고싶습니다. [3] 인뱅 2016.10.14 2181
9549 sql 작성 조언 부탁드립니다 [1] 미키롱 2016.10.14 2383
9548 간단한 쿼리문의드립니다. [3] 후알유? 2016.10.14 2019
» identity로 생성된 seq_no를 가지고 다른테이블을 update하거나 insert할려고합니다. [5] 뽀구 2016.10.12 2127
9546 링크서버문의 [1] 큘러 2016.10.11 3373
9545 query 문의. [2] 다복이 2016.10.11 2354
9544 data 동시 수정 [2] 김영훈_281547 2016.10.11 2107





XE Login