> 데이터 베이스 > Oracle > Oracle의 외래키 설정 과정을 자세히 소개합니다.

Oracle의 외래키 설정 과정을 자세히 소개합니다.

PHPz
풀어 주다: 2023-04-04 09:29:55
원래의
4255명이 탐색했습니다.

Oracle 데이터베이스는 외래 키 지원을 포함한 강력한 기능을 갖춘 매우 인기 있는 관계형 데이터베이스 관리 시스템(RDBMS)입니다.

외래 키는 한 테이블에서 다른 테이블의 행과 연결하는 데 사용되는 필드 또는 필드 그룹을 나타냅니다. 데이터 무결성을 보장하고 쿼리 기반 데이터 액세스를 활성화하는 데 사용할 수 있습니다. 외래 키 제약 조건을 추가하기 전에 Oracle에서 필요한 테이블과 테이블 간의 연결을 설정해야 합니다. 이번 글에서는 오라클의 외래키 설정 과정을 자세히 소개하겠습니다.

1. 테이블 및 관계 생성
먼저 외래 키 제약 조건을 설정해야 하는 테이블과 해당 테이블을 가리키는 테이블을 생성해야 합니다. 고객 테이블을 주문 테이블과 연관시키고 싶다고 가정해 보겠습니다. 다음 코드를 사용하여 Oracle에서 이 두 테이블을 생성할 수 있습니다.

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50),
  customer_email VARCHAR(100)
);

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  order_date DATE,
  customer_id INT,
  FOREIGN KEY (customer_id)
  REFERENCES customers(customer_id)
);
로그인 후 복사

위 예에서는 고객과 주문이라는 두 개의 테이블을 생성했습니다. 주문 테이블에는 고객 테이블의 기본 키 필드인 고객에 해당하는 customer_id 필드가 포함되어 있습니다.

2. 외래 키 제약 조건 추가
관계를 설정한 후 외래 키 제약 조건을 추가할 수 있습니다. Oracle의 외래 키 제약 조건은 테이블이 생성될 때 정의되거나 테이블이 생성된 후 추가될 수 있습니다.

이전 단계에서는 외래 키 제약 조건을 정의하고 FOREIGN KEY 및 REFERENCES 문을 통해 테이블에 추가했습니다. 여기서는 각 키워드의 의미를 자세히 설명하겠습니다.

  1. FOREIGN KEY: 외래 키 필드를 정의합니다.
  2. REFERENCES: 외래 키에 대한 대상 테이블을 정의하고 대상 테이블의 기본 키를 지정합니다.
  3. ON DELETE CASCADE: 상위 테이블 레코드를 삭제할 때 계단식 작업을 정의합니다. 상위 테이블의 레코드가 삭제되면 하위 테이블의 관련 레코드도 삭제됩니다. ON DELETE SET NULL 또는 ON DELETE NO ACTION을 사용하여 외래 키를 NULL로 설정하거나 삭제를 금지하는 등의 다른 작업을 지정할 수 있습니다.

Oracle에서 외래 키 제약 조건을 추가하는 구문은 다음과 같습니다.

ALTER TABLE child_table 
ADD CONSTRAINT fk_name 
FOREIGN KEY (child_column) 
REFERENCES parent_table (parent_column);
로그인 후 복사

여기서 child_table은 외래 키 필드가 포함된 하위 테이블이고 child_column은 외래 키 열의 이름이고 parent_table은 외래 키 열의 이름입니다. 대상 테이블, parent_column은 대상 테이블의 이름입니다. 기본 키 열의 이름입니다. fk_name은 외래 키 제약 조건의 이름이며 고유해야 합니다.

예를 들어 주문 테이블에 다음 외래 키 제약 조건을 추가할 수 있습니다(참고: CREATE TABLE 문을 통해 테이블 ​​생성 시 수행할 수 있음).

ALTER TABLE orders 
ADD CONSTRAINT fk_customer_id 
FOREIGN KEY (customer_id) 
REFERENCES customers(customer_id) 
ON DELETE CASCADE;
로그인 후 복사

이렇게 하면 fk_customer_id라는 외래 키 제약 조건이 추가됩니다. 주문 테이블 고객 테이블의 기본 키 열 customer_id를 참조하는 키 제약 조건입니다. 고객 테이블에서 행을 삭제하면 해당 행과 관련된 모든 주문도 삭제됩니다.

3. 외래 키 제약 조건 테스트
외래 키 제약 조건이 테이블에 추가되면 제대로 작동하는지 테스트할 수 있습니다. customer_id 값과 일치하지 않는 행을 주문 테이블에 삽입하여 이 제약 조건을 테스트할 수 있습니다.

INSERT INTO orders (order_id, order_date, customer_id)
VALUES (1, '2021-01-01', 100);

-- ERROR: ORA-02291: integrity constraint (fk_customer_id) violated - parent key not found
로그인 후 복사

이렇게 하면 고객 테이블에 존재하지 않는 customer_id 값을 참조하기 때문에 오류가 발생합니다. 무결성 제약 관련 오류 코드 ORA-02291을 사용하여 외래 키가 작동하는지 확인할 수 있습니다.

4. 요약
Oracle에서 외래 키는 데이터 무결성을 보장하고 테이블 간의 관계를 유지하는 중요한 도구입니다. FOREIGN KEY 및 REFERENCES 키워드를 사용하여 외래 키 제약 조건을 정의하고 ON DELETE CASCADE, SET NULL 또는 NO ACTION을 사용하여 계단식 작업을 정의할 수 있습니다. 외래 키 제약 조건을 정의한 후 제대로 작동하는지 테스트하고 데이터베이스 작업에서 작동하는지 확인할 수 있습니다.

위 내용은 Oracle의 외래키 설정 과정을 자세히 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿