반응형
Oracle 복합 기본 키/외부 키 질문
오라클의 한 테이블에 복합 기본 키가 있습니다.첫 번째 테이블의 복합 기본 키를 참조하는 두 번째 테이블의 한 테이블 항목에 대한 외부 키를 생성하려고 합니다.ORA-0256 오류가 발생합니다.제가 이걸 어떻게 입력할 수 있는지 생각해 보셨습니까?
CREATE TABLE groupspersonx (
personid number,
groupid number,
CONSTRAINT pk_persongroupid PRIMARY KEY(personid, groupid)
);
CREATE TABLE restrictedgroups (
groupid number,
name varchar2(50),
dateadded date,
since date,
notes varchar2(1024),
CONSTRAINT pk_groupid PRIMARY KEY(groupid),
CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES groupspersonx(personid, groupid)
);
오류는 FORIENT KEY가 한 열이지만 부모로 두 열을 제공하려고 하기 때문입니다.복합 키에 묶을 필요가 없습니다. 왜냐하면restrictedgroups
을 가지고 있지 않습니다.personid
열...
관계도 역방향으로 설정할 수 있습니다. 다음을 사용합니다.
CREATE TABLE restrictedgroups (
groupid number,
name varchar2(50),
dateadded date,
since date,
notes varchar2(1024),
CONSTRAINT pk_groupid PRIMARY KEY(groupid)
);
CREATE TABLE groupspersonx (
personid number,
groupid number,
CONSTRAINT pk_persongroupid PRIMARY KEY(personid, groupid),
CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES restrictedgroups(groupid)
);
나는 어떤 테이블이든 외부 키 제약 조건을 추가할 것입니다.personid
에서 나올 것입니다.
CREATE TABLE groupspersonx(
personid number, groupid number,
CONSTRAINT pk_persongroupid PRIMARY KEY(personid, groupid));
CREATE TABLE restrictedgroups (
pid number,
groupid number,
name varchar2(50),
dateadded date,
since date,
notes varchar2(1024),
CONSTRAINT pk_groupid PRIMARY KEY(groupid),
CONSTRAINT fk_persongroup FOREIGN KEY(pid,groupid) REFERENCES groupspersonx(personid, groupid));
참조 열 수가 외부 키 열과 같습니다.
열에 복합 기본 키 또는 고유 제약 조건을 만들 때마다 다른 테이블에서 참조를 제공할 수 없습니다.
예를 들면
sql>create table t1( a number,b number,c number ,primary key(a,b,c));
table created.
sql>create table g1(a number constraint con_fg references t1(a));
ERROR at line 1:
ORA-02270: no matching unique or primary key for this column-list
여기서 t1은 상위 테이블이고 g1은 하위 테이블입니다.하위 테이블은 하나의 열에 중복된 값을 포함할 수 있습니다.따라서 오라클은 해당 열 테이블을 허용하지 않습니다.
참고 항목
SQL>select constraint_name,constraint_type from user_constraints where table_name='T1';
CONSTRAINT_NAME C
------------------------------ -
SYS_C005822 P
따라서 여기서는 세 개의 열(예: a, b, cin t1 테이블)에 대한 유일한 제약 조건도 제공합니다.
따라서 복합 기본 키 또는 복합 고유 제약 조건에 외부 키를 만들 수 없습니다.
사용할 수 없습니다.
CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES groupspersonx(personid, groupid)
그것도 변경:
CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES groupspersonx(groupid)
그러면 되겠군요.
언급URL : https://stackoverflow.com/questions/6602099/oracle-composite-primary-key-foreign-key-question
반응형
'source' 카테고리의 다른 글
서비스 내에서 여러 서비스 또는 여러 리포지토리를 사용하고 있습니까? (0) | 2023.07.21 |
---|---|
최대 절전 모드의 기준 이해#setMaxResults (0) | 2023.07.21 |
numpy 배열에서 n번째 항목마다 하위 샘플링 (0) | 2023.07.21 |
Oracle에서 마지막으로 실행된 SQL 문을 가져오고 변수 값을 바인딩하는 방법 (0) | 2023.07.21 |
Spring Boot 2 - 콩이 초기화되기 전에 조치를 취합니다. (0) | 2023.07.21 |