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
운영게시판
최근게시물
PostgreSQL Q&A 3768 게시물 읽기
No. 3768
Re: Re: Re: 어떻게 변경을 해야 하나요?
작성자
소똥
작성일
2001-12-22 16:49
조회수
1,561

UPDATE,INSERT등은 따로 LOCK을 걸지않아도 내부적으로 자동 row exclusive lock인가가 걸리는데 ...

 

하나의 트랜잭션안에서만 의미가 있음니다.

 

mysql처럼 트랜젝션 개념이 없는DB( 맞나? ) 에선 다짜고짜 통으로 lock을 걸어버리는데 이건 db가 실제 처리하지 않는 시간도 lock이 걸려 있으므로 다른세션에선 그기간동안 접근수 없죠.

 

아래의 경우처럼 한문장만 할경우라면 lock이 아무 의미가 없고 여러개의 문을 트랜잭션 처리할경우만 필요한 옵션으로 lock을 시키시면 될거라봄니다.

 

mysql의 unlock과 같은 기능은 필요가 없음니다.

트랜잭션이 끝나면 자동으로 lock이 해제 될태니까요.

 

근데 죄송하지만 정확한 답변인지는 저도잘...

 

 

-- 전병혁 님이 쓰신 글:

>> 답변 감사합니다.

>> mysql처럼 lock를 걸면 어떻게 코딩을 해야 하나요?

>> 메뉴얼을 보아도 잘 모르겠네요

>>

>> postgres=# \h lock

>> Command: LOCK

>> Description: explicitly lock a table

>> Syntax:

>> LOCK [ TABLE ] name [, ...]

>> LOCK [ TABLE ] name [, ...] IN lockmode MODE

>>

>> where lockmode is one of:

>>

>> ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE |

>> SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE

>>

>> 이게 무슨소린지?

>> 다시 한번 답변부탁드립니다.

>>

>>

>> -- 소똥 님이 쓰신 글:

>> >> SQL문 하나 하나는 그자체로 트랜젝션이 되므로 아래처럼 begin,rollback등를 쓰실필요는 없고 안되는 증상을 잘모르겠지만 mysql처럼 lock을 걸면 안될까요?

>> >>

>> >> -- 전병혁 님이 쓰신 글:

>> >> >> 이곳을 통해 많은 것을 배우고 있는 사람입니다.

>> >> >>

>> >> >> mysql을 사용하다가 pgsql을 설치해서 짐 공부를 하고 있습니다.

>> >> >>

>> >> >> 게시판을 만들고 있는데 mysql에서 트랜잭션(?)을 어떻게 pgsql로 변경을

>> >> >>

>> >> >> 해야 하는지요...

>> >> >>

>> >> >> 게시판 알고리즘은 업데이트형 게시판입니다.

>> >> >>

>> >> >> idx라는 필드가 바로 업데이트되는 필드입니다.

>> >> >>

>> >> >> 물론 데이터가 많아지면 문제는 됩니다.

>> >> >>

>> >> >> mysql로 된 소스 올립니다(답변글을 작성했을때 입니다.).

>> >> >>

>> >> >> mysql_query("lock table $table write",$conn);

>> >> >> $result = mysql_query("update $table set idx=idx+1 where idx>=$re_idx",$conn);

>> >> >> mysql_query("unlock table",$conn);

>> >> >>

>> >> >> 위의 소스를 pgsql로 변경을 하면 어떻게 해야하나요?

>> >> >>

>> >> >> 제가 구현한 방법은 아래와 같습니다. 그런데 안되던데요

>> >> >>

>> >> >> pg_exec($conn,"begin");

>> >> >> $result = pg_exec($conn,"update $table set idx=idx+1 where idx>=$re_idx");

>> >> >> if($result) pg_exec($conn,"commit");

>> >> >> else pg_exec($conn,"rollback");

>> >> >>

>> >> >> by 전병혁 (chunbh)

[Top]
No.
제목
작성자
작성일
조회
3791설치에러 및 초보의 몇가지 질문입니다.
홍창균
2001-12-26
1347
3790설치에러 및 초보의 몇가지 질문입니다.
홍창균
2001-12-26
1487
3793┕>Re: 설치에러 및 초보의 몇가지 질문입니다. [1]
소똥
2001-12-26 14:01:10
1599
3772한글정렬의 문제(postgrel ver 7.0.2) [1]
전기흥
2001-12-24
1497
3764어떻게 변경을 해야 하나요?
전병혁
2001-12-22
1483
3765┕>Re: 어떻게 변경을 해야 하나요?
소똥
2001-12-22 13:56:21
1612
3767 ┕>Re: Re: 어떻게 변경을 해야 하나요?
전병혁
2001-12-22 15:05:12
1441
3768  ┕>Re: Re: Re: 어떻게 변경을 해야 하나요?
소똥
2001-12-22 16:49:42
1561
3769   ┕>Re: Re: Re: Re: 어떻게 변경을 해야 하나요?
전병혁
2001-12-22 18:41:54
1741
3771    ┕>Re: Re: Re: Re: Re: 어떻게 변경을 해야 하나요?
이주호
2001-12-23 22:22:07
1463
3762한글 소팅문제...
조성태
2001-12-22
1575
3766┕>Re: 한글 소팅문제...
조성준
2001-12-22 14:28:57
1478
3759DB안의 내용을 다른 화일로 만들고 싶습니다. [1]
김영진
2001-12-21
1641
3760┕>Re: select문은 걍.. 보여지기만 하는거 아닌가여..?? [1]
김영진
2001-12-21 17:35:52
1464
3761┕>Re: DB안의 내용을 다른 화일로 만들고 싶습니다.
소똥
2001-12-21 18:36:32
1669
3758copy명령어로 insert할 때 문제가.. [1]
김윤순
2001-12-20
1800
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다