database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7049 게시물 읽기
No. 7049
Merge문 질문입니다.
작성자
남현진(morningtak)
작성일
2017-04-25 16:55ⓒ
2017-04-25 17:08ⓜ
조회수
3,083

데드락이 발생하여 해당 찾아보던 중 MERGE가 의심되서 질문드립니다.

Merge문을 이용해 Update 혹은 Insert를 할때 락은 어떤식으로 걸리나요?

 

--테이블 구조

--tA 테이블 -> (UserID, DataID, Data)

--tB 테이블 -> (DataID, Data)

 

MERGE tA --(1)  

USING tB --(2)

ON tA.UserID = @User AND tA.DataID = tB.DataID --(3)

WHEN MATCHED THEN

 UPDATE SET tA.Data = tB.Data --(4)

WHEN NOT MATCHED THEN

 INSERT (UID, UID2, Data) --(5)

VALUES (@User, tB.DataID, tB.Data)

 

 

위 쿼리처럼 되어있으면 락이 어떤식으로 걸리나요??

해당 쿼리를 하나로 묶어서 한번 락이 걸리는건가요?

아니면 INSERT, UPDATE, SELECT등으로 나눠서 한번씩 락을 걸고 푸는 방식인가요?

 

일단 저는 락에 대해서 경험이 전무하고 개념만 살짝 이해하고있습니다 ㅠㅠ
자세하게 설명은 못해주시더라도 제가 보여드린 예시에서 맞다 아니다 1번 3번걸린다 이런식으로라도 답변 주시면 감사하겠습니다.

 

[Top]
No.
제목
작성자
작성일
조회
7072변수를 배열로 받을수 있을까요
이경민
2017-05-22
2867
7054FUNCTION 문안의 UPDATE 시 에러나요 [2]
김우성
2017-05-09
3030
7053사용자 프로세스만 중지할 수 있습니다.
유닉스
2017-05-06
3699
7049Merge문 질문입니다.
남현진
2017-04-25
3083
7048계정 권한 질문
이경민
2017-04-18
2901
7047동적으로 생성된 COLUMN 들을 합칠수있나요? [4]
김우성
2017-04-17
3159
7046대입을 해서 한번에 값을 얻을수 있을까요? [5]
김우성
2017-04-11
3212
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다