답변 감사합니다.
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)
|