2010-11-29 5 views
0

Linux에서 sqlite3을 사용하고 있는데 현재 문제가 있습니다. 데이터베이스와 2 개의 테이블이 있습니다 : db1과 db2. db1에는 empID, empName, empAddr의 세 열이 있습니다. db2는 단지 1 개의 컬럼을 가지고있다 : empID와 그 값은 디폴트로 0으로 설정된다.다른 프로그램이 액세스 할 때 SQLite 데이터베이스를 잠금 해제하는 방법은 무엇입니까?

empID 값의 변경 사항에 대해 두 번째 데이터베이스 db2를 계속 폴링하는 C 프로그램을 만들었습니다. db2의 새로운 empID 값에 따라 db1에서 해당 정보를 가져옵니다. 예를 들어, db2의 empID 값이 1로 변경되면 프로그램은 empID가 1 인 db1에서 정보 (empName 및 empAddr)를 찾습니다. 그러나 2 터미널을 실행할 때 : 1 수동으로 값을 변경합니다 DB2에서 empID와 C 프로그램을 실행하기위한 또 다른 1의 경우, 잠긴 데이터베이스의 문제점이 발생했습니다. 프로그램이 실행 중이고 데이터베이스에 액세스하는 동안 db2에서 empID의 값을 변경하려고하지만 C 프로그램이 액세스하고 있기 때문에 프로그램을 실행하는 터미널을 닫지 않는 한 empID의 값을 업데이트 할 수 없다는 것을 알고 있습니다. 그래서 제 질문은, 내 프로그램을 통해 DB2에 액세스하는 동안 db2의 empID 값을 업데이트/변경하는 방법이 있습니까? 답변은 크게 감사하겠습니다. 고맙습니다.

답변

0

sqlite에는 단일 .sq3 파일 잠금 기능이 있습니다!

당신은 그러나 메시지를 보낼 데이터베이스를 사용하여 sqlite docs

프로그램을 보내고 "선택"HTE에 확약 읽기의 프라그를 설정할 수 있습니다 편지를 보낼 수있는 헛간을 사용하는 것과 같습니다.

+0

어떻게 프로그램에 pragma 문을 삽입합니까? – user523438

+0

다른 SQL 문과 마찬가지로 플러그 - 마를 "실행"합니다. –

+0

고맙습니다, 새로운 문제가 생겼습니다. PRAGMA 문은 한 번만 작동했습니다. 예를 들어, 내 프로그램이 테이블을 폴링하는 동안 테이블의 내용을 변경하고 폴링 프로그램이 이에 따라 반응합니다. 그러나 테이블의 내용을 다시 변경하려고하면 같은 오류가 발생합니다. 데이터베이스가 잠겨 있습니다. 테이블 내용이 가능한 한 많이 변경 될 수 있도록 수정 될 수 있습니까? – user523438