[]
        
(Showing Draft Content)

외부 데이터베이스 동시성 제어

외부 연결 데이터베이스 동시성 제어

동시성 제어란 여러 사용자가 동시에 업데이트를 실행할 때 데이터베이스의 무결성을 보호하기 위한 기술입니다. 한 사용자의 작업이 다른 사용자의 사용에 부합하지 않는 영향을 미치지 않도록 보장하는 것이 목적입니다. 동시성 제어가 올바르지 않으면 더티 읽기(Dirty Read), 팬텀 읽기(Phantom Read), 반복 불가능 읽기(Non-repeatable Read) 등의 문제가 발생할 수 있습니다.

동시성 제어 활성화

데이터베이스 종류에 따라 동시성 제어를 활성화하는 방법이 다릅니다.

SQL Server 데이터베이스

사용하는 테이블에 타임스탬프 데이터 유형의 열이 포함되어 있어야 합니다. 예를 들어 SQL Server의 timestamp 유형이 이에 해당합니다.

Oracle 데이터베이스

Oracle 데이터베이스는 사용자가 다음과 같이 설정해야 합니다.

동시성 제어를 위한 Rowversion 열을 timestamp 유형으로 만들고, 업데이트 시 해당 Rowversion 정보를 현재 날짜로 업데이트하는 트리거를 생성합니다.

트리거 예시는 다음과 같습니다:

sql

CREATE OR REPLACE TRIGGER trigger_testRowversion
BEFORE UPDATE
   ON TABLE1
  FOR EACH ROW
BEGIN
  :new.rowversion := current_timestamp;
END trigger_testRowversion;

동시성 제어에 사용할 열 이름이 ROWVERSION이라고 가정합니다. Forguncy에서 Oracle에 연결할 때, 오른쪽 설정 패널의 "타임스탬프 열"에서 "ROWVERSION"을 선택하면 동시성 제어가 활성화됩니다(그림 1 참고).

image

ODBC 데이터 소스

Forguncy는 ODBC 데이터 소스의 동시성 제어를 지원하지 않습니다. 아래에서 소개하는 방법으로 동시성 제어를 구현할 수 있습니다.

참고: 이 방법은 데이터 테이블 작업의 업데이트 명령을 사용하여 데이터를 업데이트하는 경우에만 적용됩니다.

작업 순서

1. 데이터 소스의 테이블에 동시성 제어 정보를 저장할 필드를 추가합니다. 필드 유형은 문자열을 저장하는 데이터 유형으로 선택하되, 36자리 이상의 문자열을 저장할 수 있는 크기여야 합니다. 예를 들어 이름을 ROWVERSION으로 지정한 후 ODBC 데이터 소스에 연결합니다.

2. 레코드를 업데이트하는 페이지에 업데이트 시 ROWVERSION 열 정보를 저장할 셀을 추가합니다. 필요에 따라 ROWVERSION 정보의 표시 여부를 설정할 수 있습니다.

3. 확인 버튼에 조건 명령을 설정하여, F4(즉, 페이지가 열릴 때 가져온 ROWVERSION 값)와 업데이트 시의 ROWVERSION 값이 동일한지 판단합니다. 같으면 데이터를 업데이트하고, 다르면 경고 메시지를 표시하고 업데이트를 취소합니다.

4. 데이터 테이블 작업 명령을 선택하고, 작업 유형을 "업데이트"로 선택합니다. 업데이트 시 ROWVERSION 값도 함께 업데이트해야 합니다.

5. "Else [조건식]"을 추가하고, 명령으로 "메시지 상자 표시"를 선택하여 경고 메시지를 설정합니다.