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

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 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
9562 서버 교체하여 사용하려고 보니.. 약 20~30대 정도 접속하니... 쿼리가 실행이 않되네요.. [2] 랜덤의세계 2016.10.20 3242
9561 쿼리창 한글문제 [1] Molly75 2016.10.20 2385
9560 오라클 쿼리문 한번 봐주시고 조언좀 부탁드려요~ [1] karyaladin 2016.10.20 2948
9559 ETL 관련 데이터변환관련 Best Practice 문의 [1] Sean 2016.10.19 2772
9558 오라클 작업을 해야 하는데 모르겠네요 [4] 아싸라비아콜롬비아 2016.10.19 2978
9557 ssms 사용자 데이터베이스만 보이게 하는방법 [1] 싱송 2016.10.19 3968
9556 sp에서 테이블명을 바꿔가면 호출할수 있는 좋은 방법이 있을까요?? [2] mokee 2016.10.18 3632
9555 DB서버 이전 [4] 장성원_305526 2016.10.17 3006
9554 조인성능 질문드립니다. [4] 독고탁11 2016.10.17 2847
9553 쿼리 질문 드립니다. [1] 귤귤귤 2016.10.17 2870
9552 어셈블리 문자열 저장 ㅠㅠ 꼴랑깔랑 2016.10.16 2242
9551 쿼리문 문의드립니다. [4] 꾹스 2016.10.14 2928
9550 엑셀에 있는 데이터로 DB를 변경하고싶습니다. [3] 인뱅 2016.10.14 2096
9549 sql 작성 조언 부탁드립니다 [1] 미키롱 2016.10.14 2297
9548 간단한 쿼리문의드립니다. [3] 후알유? 2016.10.14 1922
» identity로 생성된 seq_no를 가지고 다른테이블을 update하거나 insert할려고합니다. [5] 뽀구 2016.10.12 1977
9546 링크서버문의 [1] 큘러 2016.10.11 3272
9545 query 문의. [2] 다복이 2016.10.11 2291
9544 data 동시 수정 [2] 김영훈_281547 2016.10.11 2004
9543 PK 관련 문의 슬이슬이 2016.10.07 2484





XE Login