2011-12-03 2 views
2

오라클 테이블 (부모, 자식, 루트 열의 표준 모델)에 여러 계층 구조를 저장하고 있으며 계층 구조가 올바른지 확인하기 위해 어떤 제약 조건을 고려해야하는지 알고 싶습니다 유효합니다.오라클 테이블의 여러 계층 구조의 유효성 확인

각 행에 대해 하위, 상위 및 루트 열이 모두 의미가 있는지 확인하고 싶습니다 (예 : 동일한 루트가 두 개의 다른 계층에 대해 정의 될 수 없습니다.)

나는 아무 제약 (!) 일치/불완전한 데이터 항상 상관없이 응용 프로그램이 시도하는 방법을 신중하게 어떤 식 으로든에서 섬뜩한 그것을 피하기 위해 정의 된 연결된 테이블 작업에서 알고있다.

이제 트리거를 고려해야하지만 단순한 경우를 제외하고는 모든 경우에 대해 피하는 것이 좋습니다.이 경우 제약 조건을 코딩하는 방법을 볼 수 없으며 저장 프로 시저가 유일한 실제 방법입니다 (아마도 직렬화 가능 트랜잭션 모드 세트로 설정) ?

답변

1

제약 조건의 동일한 테이블을 참조하는 외래 키를 CREATE TABLE 문에서 정의 할 수는 없지만 ALTER TABLE 문을 사용하여 수행 할 수 있습니다.

create table XXX (
    key number primary key, 
    parent number 
) 
/

alter table XXX add constraint XXX_FK foreign key (parent) references XXX 
/
+0

단일 명령으로 할 수 있지만 기본 키 열을 명시 적으로 참조해야합니다. 예 :'제약 조건 xxx_fk 외래 키 (상위) 참조 xxx (키) '. –