sourcecode

SQL 오류: ORA-02291: 무결성 제약 조건

copyscript 2023. 10. 11. 20:53
반응형

SQL 오류: ORA-02291: 무결성 제약 조건

저는 외부 키에서 값에 접근하려고 하는 데이터베이스를 만들고 있습니다.다음 표 두 개를 만들었습니다.

CREATE TABLE Component(
    ComponentID varchar2(9) PRIMARY KEY
    , TypeID varchar2(9) REFERENCES TypeComponent(TypeComponentID)
)

INSERT INTO Component VALUES(192359823,785404309)
INSERT INTO Component VALUES(192359347,785404574)
INSERT INTO Component VALUES(192359467,785404769)
INSERT INTO Component VALUES(192359845,785404867)
INSERT INTO Component VALUES(192359303,785404201)
INSERT INTO Component VALUES(192359942,785404675)


CREATE TABLE TypeComponent (
    TypeComponentID varchar2(9) PRIMARY KEY
    , Type_Description varchar2(30) CONSTRAINT Type_Description 
        CHECK(Type_Description IN('Strap', 'Buckle', 'Stud')) NOT NULL
)

INSERT INTO TypeComponent VALUES(785404309, 'Strap')
INSERT INTO TypeComponent VALUES(785404574, 'Stud')
INSERT INTO TypeComponent VALUES(785404769, 'Buckle')
INSERT INTO TypeComponent VALUES(785404867, 'Strap')
INSERT INTO TypeComponent VALUES(785404201, 'Buckle')
INSERT INTO TypeComponent VALUES(785404675, 'Stud')

이것이 두 개의 테이블입니다.Component그리고.TypeComponent.Component가 모체입니다.TypeComponent, 그리고 나는 다음 INSERT 문을 실행하려고 합니다.

INSERT INTO Component VALUES(192359823,785404309)

그러나 그것은 나에게 오류를 주고 있습니다.

지금까지 Oracle SQL dev에서 진행한 세션입니다.

삽입을 시도합니다.TypeComponent먼저 테이블에, 그리고 당신의 것에 삽입합니다.Component테이블.

오류에 따라:

ORA-02291: 무결성 제약 조건(string.string) 위반 - 상위 키를 찾을 수 없음
원인: 외국 키 값에 일치하는 기본 키 값이 없습니다.
Action: 외부 키를 삭제하거나 일치하는 기본 키를 추가합니다.

이는 참조된 표에 일치하는 키가 없음을 의미합니다.

편집 #1

참고로, 여기 오라클 에러 코드에 대한 모든 도움을 받을 수 있는 사이트가 있습니다.

http://[ora-02291].ora-code.com/

이 사이트의 홈페이지는 다음과 같습니다. http://www.ora-code.com/

URL의 오류 코드를 오류 코드에 맞게 바꿀 수 있으며, 이 오류에 대한 페이지에 액세스할 수 있습니다.

오류가 쉽게 재현될 수 있도록 SQLPLUS 세션 전체를 올려주시기 바랍니다.

상위 테이블에 삽입하기 전에 하위 테이블에 삽입하는 작업이 수행되고 있으며 이로 인해 오류가 발생합니다.

삽입 순서를 변경하고 코드를 다시 실행합니다.

SQL> CREATE TABLE TypeComponent(
  2    TypeComponentID varchar2(9) PRIMARY KEY, 
  3    Type_Description     varchar2(30) 
  4    CONSTRAINT Type_Description CHECK(Type_Description IN('Strap', 'Buckle', 'Stud')) NOT NULL
  5  )
  6  ;

Table created.

SQL> CREATE TABLE Component(
  2    ComponentID varchar2(9) PRIMARY KEY, 
  3    TypeID varchar2(9) REFERENCES TypeComponent(TypeComponentID)
  4  )
  5  ;

Table created.

SQL> INSERT INTO Component VALUES(192359823,785404309);
INSERT INTO Component VALUES(192359823,785404309)
*
ERROR at line 1:
ORA-02291: integrity constraint (COAMGR.SYS_C002513823) violated - parent key
not found

SQL> INSERT INTO TypeComponent VALUES(785404309, 'Strap');

1 row created.

SQL> INSERT INTO Component VALUES(192359823,785404309);

1 row created.

SQL> commit;

Commit complete.

component당신이 가지고 있는 테이블

 TypeID REFERENCES TypeComponent(TypeComponentID)

그리고 나서 당신은 그 다음에

INSERT INTO Component VALUES(192359823,785404309)

이 작업을 먼저 실행하면 Oracle은Integrity constraint에 삽입하려고 하므로 오류가 발생했습니다.component에 없는 값을 표로 표시합니다.TypeComponent테이블.

이것은 당신이 그것을 언급했기 때문에 문제가 됩니다.TypeID는 외국 키, 즉 의 값입니다.TypeID에 존재할 필요가 있습니다.TypeComponent에 삽입하기 전에Component

참조된 키(내 경우에는 외부 키)에 이 오류가 있는 경우가 있습니다.참조된 키를 테이블에 다시 만들어 주십시오.

언급URL : https://stackoverflow.com/questions/4349864/sql-error-ora-02291-integrity-constraint

반응형