2012-12-02 2 views
0

나는 PostgresqlJDBC을 사용하고 있으며, 어설 션을 만드는 방법을 알아 내려고하고 있습니다.JDBC에서 어서션을 만드는 방법은 무엇입니까?

나는 현재 두 개의 관계 테이블 A(url varchar(30))과 테이블 B(url varchar(30))을 가지고 있는데,이 요소가 이미 테이블 A에 존재하는 경우 테이블 B에 삽입 할 수 없도록 어설 션을 작성하려고합니다. 어떻게 JDBC에서이 작업을 수행합니까? 어설 션을 사용할 수 없다면 어떻게 비슷한 일이 발생합니까?

편집 : 좋아, 그래서 그것은 포스트 그레스를 사용하여 어설 션을 만들 수 없습니다 읽었습니다; 따라서, 내 질문은 지금, 나는 PostgreSQL과 JDBC의 제약 조건을 사용하여 비슷한 것을 어떻게 할 것인가?

답변

1

원하는 것은 사실상 직접적으로 지원되지 않는 제외 외래 키 제약 조건입니다. 조건을 테스트하는 PL/PgSQL BEFORE INSERT OR UPDATE 트리거 함수를 사용하여이 제약 조건을 구현할 수 있습니다.

Pg docs의 PL/PgSQL trigger procedures을 참조하십시오.

하나의 트랜잭션이 B에 삽입되고 다른 트랜잭션은 A에 삽입되는 경쟁을 처리하려면 아마도 SERIALIZABLE 격리 모드를 사용해야합니다. 9.1/9.2에서는 개선 된 serializable 격리 지원이 필요합니다.

1

오타가 없는지 확실하지 않지만 'JDBM'이 'JDBC'여야합니까?

MapDB (일명 JDBM4)의 경우 비슷한 상황을 처리 할 맵 수정 리스너를 구현할 계획이 있습니다. JDBM3에는 이와 같은 기능이 없습니다.

지금은 어설 션을 사용하지 말고 코드에서 확인하는 것이 좋습니다.

+0

감사합니다. JDBC 여야합니다. – Nosrettap

관련 문제