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
운영게시판
최근게시물
Sybase Q&A 1644 게시물 읽기
No. 1644
Exclusive Lock에 대해서...
작성자
전형국
작성일
2006-08-30 11:30
조회수
4,787

Oracle에서는... select * from X where idx=1 for update

MS-SQL에서는... Ex-RowLock을 못찾아서 그냥 테이블 락...

select * from X with(XLOCK) where idx = 1 

이런식으로 사용했었는데요...


사이베이스에서 select 시에 테이블 혹은 로우 단위로 EX-Lock을 거는 방법은 없나요?


select 하고 commit 하기 전에 해당 데이터를 읽지 못하게 블록하는...


사이베이스는 자료 찾기가 참 어렵네요... 너무 어려워..ㅠㅠ


p.s. 혹시 MSSQL에서 테이블 락 말고 ROWLOCK을 EXCLUSIVE 하게 거는 방법 아시는분???

이 글에 대한 댓글이 총 3건 있습니다.

뭘말씀하시는지 잘 이해가 안가서요~~

table lock을 발생시키려면.....select holdlock하심 되고요


row level에 exclusive락을 거시려면 set isolation 3 또는 select ~~at isolation 3

하심 될거 같은데요

지연님이 2006-08-31 15:47에 작성한 댓글입니다. Edit

제가 질문을 잘못한건가요?? ;;; 워낙 아는게 없어서리..


제가 필요로 하는건...


한쪽 세션에서 select no from NoTable where no >10

일케 쿼리를 날리면.


다른 세션에서 동일한 쿼리를 날렸을 때 락이 걸려서 대기하도록 하는 것입니다..^^


오라클에서 for update 를 붙여서 쿼리하면 이런 상태가 되죠^^


도움 부탁드립니다~

전형국님이 2006-08-31 19:08에 작성한 댓글입니다. Edit

select for update ...는 오라클 내부적으로 row를 가짜로 Update한 결과를 낳습니다. 


select col1 from tab1 where col1='korea' for update


update tab1 set col1='korea' where col1='korea' 가

오라클 내부적으로 처리하는게 같다고 보시면 됩니다.

결국

사이베이스에서 select for update를 구현할려면

위 처럼 update 친 후 select하믄 될듯합니다(단 col1컬럼에 대해 인덱스 존재 조건).   

영권이(hahmyk)님이 2006-09-08 13:17에 작성한 댓글입니다.
이 댓글은 2006-09-09 02:20에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
1647파워빌더문의입니다. [2]
박정현
2006-09-04
3965
1646[질문입니다]인덱스에 대해서 [2]
장학우
2006-09-01
3688
1645초보좀도와주세요~! [1]
김대현
2006-08-30
4222
1644Exclusive Lock에 대해서... [3]
전형국
2006-08-30
4787
1643View에 대하여 [3]
김충관
2006-08-30
5054
1642Identity 필드에 -1을 입력하는 방법은 없나요?? [1]
전형국
2006-08-29
4035
1641달의 말일자 구하기 [1]
DJ보이
2006-08-29
5042
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다