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
운영게시판
최근게시물
MySQL Q&A 30830 게시물 읽기
No. 30830
동시 업데이트 방지 어떻게 하면 될까요?
작성자
제록(zerock)
작성일
2015-03-30 10:03ⓒ
2015-03-30 10:16ⓜ
조회수
4,857

현재 MySQL 5.1 버전을 사용중에 있고 innoDB에 트랜젝션을 걸어서 사용하고 있습니다. 

 

A, B, C, D, E, F 관리자가 있고

 

유저가 질문을 올리면 관리자가 답변을 하면 문자로 답변 되었다는 문자를 발송하는 시스템입니다.

 

현재 관리자가 답변을 등록하면 DB에 ansYN 칼럼에 Y 값으로 업데이트 합니다.

 

답변을 등록할 때 ansYN 칼럼이 Y 일때 '이미 처리되었습니다' 라는 메시지를 띄우고 처리가 되지 않도록 되어 있습니다.

 

그런데 문제는 A와 B 혹은 C,D,E 관리자가 동시에 답변했을 경우 입니다.

 

A와 B 가 동시에 입력할 경우 ansYN 칼럼이 모두 N 값을 가지고 있으므로 두개 모두 처리 됩니다.

트랜젝션 걸어 놓으면 괜찮을거라 생각했었는데 이런 일이 발생하니 좀 황당합니다.

 

어떻게 해야 동시 업데이트를 방지할 수 있을까요?

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

begin;

select ansYN from table where id='PK' for update;

update table set ansYN='Y', ans='답변내용' where id='PK' AND ansYN='N';

commit;

 

이런식으로 for update문으로 배타적 잠금을 설정하시면 됩니다.

 

박인호(paerae)님이 2015-03-30 13:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30835복제 구성 관련 질문드립니다.
초보입니다
2015-04-07
5265
30834응시자 통계 현황 출력하기 [2]
음악
2015-04-07
5302
30832셀렉트 박스 sql에서 불러오기 가능한가요? [1]
이슬
2015-04-02
4765
30830동시 업데이트 방지 어떻게 하면 될까요? [1]
제록
2015-03-30
4857
30828성능모니터링
초보초보
2015-03-02
5492
30827쿼리 질문드립니다. [4]
Hades
2015-02-28
6602
30825sql 일괄변경 문의 [1]
초보에요
2015-02-27
5654
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.072초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다