2011-02-16 6 views
1

나는 7 개의 열이있는 Oracle 테이블을 가지고 있는데,이 테이블에는 2 개의 트리거가 있습니다. 첫 번째 고유 식별자를 생성합니다 (시퀀스 증가)Oracle의 트랜잭션 무결성 보증

두 번째 트리거는 utl_tcp를 사용하여 원격 서버를 뚫고 20 자의 데이터를 전달합니다. 두 번째 트리거는 "AFTER INSERT"로 정의됩니다.

이제 오라클 트리거에서 핑을 가져 오는 원격 서버가 돌아가서 최근에 추가 된 항목을 확인하기 위해 테이블을 쿼리합니다 (상태 필드에 어떤 필드가 있는지를 알려주는 상태 필드가 있음). 이전 항목에서 새 항목을 입력하십시오.)

이제는 새로운 데이터가 없음을 반환하는 즉시 쿼리하는 것이 문제입니다. 그러나 10 초 후 테이블을 쿼리하면 새 데이터를 반환합니다.

이 이상한 일이 아니며 주문 트리거 -> 삽입 -> 트리거가 주어진다면 그 데이터를 확인해야합니다.

이것은 문제가 아니며 다른 사람이 이것을 보았습니다.

필자의 오라클 서버가 얼마나 느리고 빠르며 규모가 작은 지 알 수없는 트랜잭션 무결성을 기대합니다.

이 목표를 달성하기 위해 필요한 플래그가 있습니까?

답변

3

원격 서버는 커밋 될 때까지 새로 삽입 된 행을 보지 못합니다. 트리거가 실행 된 후에는 (아마도 작은) 유한 시간이됩니다.