2011-11-25 2 views
2

거대한 시스템으로 알기 쉽게, 병원 관리 시스템을 개발 중이며, 리셉션에서 환자를위한 새로운 티켓을 열 것입니다. 티켓은 사용자 정의 된 양식을 쓸 수 없습니다. 112011000101)MySQL 멀티 유저 거래

티켓을 저장할 때 & 번호가 하나 증가하면 마지막으로 저장된 티켓을 읽지 않습니다. (티켓에서 Tick_No를 선택하십시오. Tick_No Like '112011'% Tick_No DESC 한도에 따라 주문 1), 이것은 마지막으로 저장된 티켓 (112011000101)을 1 씩 증가시켜 반환합니다. ==> 새 티켓은 (112011000102)가됩니다.

그래서 새로운 티켓을 저축하는 견인 직원이있는 경우 중복 티켓을받을 수있는 기회가 있습니까?

나는 행 수준의 잠금을 만드는 mysql 데이터베이스와 트랜잭션을 사용하고 있지만 모든 쿼리에는 여전히 테이블을 사용할 수 있습니다.

그래서 가능한 경우 명확한 대답을하시기 바랍니다.

메모 잘못된 내용이 있으면 롤백이 실행되고 자동 재시도 저장 기능이 실행됩니다 (각 저장 순서에서 마지막 번호 확인을 수행함).

답변

0

MyISAM 테이블 엔진을 사용할 수 있도록이 경우 테이블 수준 잠금을 설정해야합니다. 이 도움이 될 것입니다 http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

+0

내가 알고 있지만 관계형 데이터베이스가 필요합니다, 잠금 테이블은 트랜잭션을 사용하여 이익을 죽일 것입니다. –

+0

마지막 티켓에서'SELECT ... FOR UPDATE'를하고 새 라인을 추가하는 것은 어떻습니까? 이렇게하면 한 번에 한 명의 사용자가 온라인을 통해 새 번호를 만들 수 있습니다. – Dragos

+0

좋아, 좀 더 간단하게 만들자. 티켓 테이블에 같은 번호의 견인 티켓을 넣으면 mysql이 그 중 하나를 롤백 할 때 트랜잭션을 사용할 때를 알고 싶다. 또한 적어도 하나는 논평 될 것인가? 네 대답은 무엇입니까? –