August 2, 2019 - No Comments!

오라클 외래키 예제

다음 오류는 Oracle 제약 조건 변경 명령과 연결됩니다. 이는 오라클이 제약 조건을 정의하려고 한다는 것을 알려줍니다. 그런 다음 제약 조건의 이름을 지정합니다. 이 경우 제약 조건 FK_ITEM_PART를 지정했습니다. 구속조건 이름은 각 테이블에 대해 고유해야 하며 길이가 30자 이하여도 될 수 있습니다. 그런 다음 외래 키 키워드를 사용하여 외래 키 제약 조건을 정의하고 있음을 나타냅니다. 다음으로 이 외래 키가 속한 테이블의 열을 정의합니다. 이 방법의 장점은 외래 키 제약 조건의 이름을 지정할 수 있다는 것입니다. 인라인 메서드를 사용하면 Oracle 데이터베이스에서 이름이 자동으로 생성됩니다.

외래 키 정의는 다음 조건이 적용됩니다. 즉, supplier_groups 테이블의 행과 일치하지 않는 공급자 테이블에 행을 삽입하려고 하면 공급자 테이블에 종속 행이 있는 supplier_groups 테이블에서 행을 삭제하려고 시도하면 실패합니다. 먼저 외래 키 제약 조건 이름을 명시적으로 할당하려면 CONSTRAINT 절 뒤에 이름을 사용합니다. CONSTRAINT 절은 선택 사항입니다. 생략하면 오라클은 외래 키 제약 조건에 시스템 생성 이름을 할당합니다. 이 문제를 해결하는 해결 방법은 Oracle 외부 키 제약 조건을 사용하여 supplier_groups 및 공급자 테이블의 행 간의 관계를 적용하는 것입니다. 외래 키 제약 조건 매개 변수에 대한 자세한 내용은 Oracle 설명서에서 확인할 수 있습니다. Oracle의 테이블에 외래 키를 만드는 방법에는 인라인 메서드와 오프라인 메서드의 두 가지가 있습니다. 여기에 테이블 만들기 문에 대한 내 가이드에서 두 가지를 모두 문서화했으며이 기사에서 설명 하겠습니다. Oracle의 "테이블 변경" 구문을 사용하여 이 양식에 데이터 제약 조건을 추가합니다. 예를 들어 ITEM 및 PART라는 두 테이블의 경우를 예로 들어 보겠습니다. 이러한 테이블에는 관계가 있습니다(항목에는 하나 또는 여러 부분이 있을 수 있음).

외래 키 제약 조건은 해당 관계를 적용하는 데 도움이 됩니다. DBA 환경에서는 ERD(엔터티 관계 다이어그램)라는 다이어그램을 사용하여 테이블이 어떻게 관련되는지 시각적으로 보여 드립니다. 다음은 ITEM 및 PART 테이블의 관련 을 보여 주는 ERD입니다. Oracle을 사용하면 외래 키 제약 조건을 생성, 추가, 삭제, 비활성화 및 활성화할 수 있습니다. 다음은 Oracle "테이블 변경" 구문을 사용하여 외래 키 제약 조건을 추가하는 몇 가지 예입니다. 외래 키 관계에는 중앙 데이터 값을 포함하는 상위 테이블과 상위를 가리키는 동일한 값이 있는 하위 테이블이 포함됩니다. 외래 KEY 절은 자식 테이블에 지정됩니다. 상위 테이블과 자식 테이블은 동일한 저장소 엔진을 사용해야 합니다. 임시 테이블이 아니어야 합니다.

InnoDB 테이블(일반적으로 MySQL 서버에서 오류 150)과 관련된 외래 키 오류의 경우 SHOW ENGINE INNODB STATUS 출력을 확인하여 가장 최근의 InnoDB 외래 키 오류에 대한 정보를 얻을 수 있습니다. 제한: 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부합니다. 제한(또는 작업 없음)을 지정하는 것은 ON DELETE 또는 ON UPDATE 절을 생략하는 것과 같습니다. 결론은 PART 테이블에 나열되지 않는 한 부품을 ITEM 테이블에 추가할 수 없다는 것입니다. 이렇게 하면 데이터 무결성이 유지됩니다. 팩트 후 테이블에 외래 키 제약 조건을 추가해야 하는 경우 다음과 같이 테이블 변경 명령을 사용하기만 하면 됩니다: 테이블 cust_table 추가 제약 조건 fk_cust_name FOREIGN KEY(person_name) 처음에 연기된 사람_table(person_name) 추론 가능; 지정되지 않은 ON DELETE 또는 ON UPDATE의 경우 기본 작업은 항상 제한됩니다. 외래 키와 참조된 키의 해당 열에는 유사한 데이터 형식이 있어야 합니다.

Published by: gianni57

Comments are closed.