반응형
복합 기본 키를 외래 키로 사용하려면 어떻게해야합니까? 내 시도가 작동하지 않는 것 같습니다.
create table student
(
student_id varchar (25) not null ,
student_name varchar (50) not null ,
student_pone int ,
student_CNIC varchar (50),
students_Email varchar (50),
srudents_address varchar(250),
dept_id varchar(6),
batch_id varchar(4),
FOREIGN KEY (dept_id) REFERENCES department(dept_id),
FOREIGN KEY (batch_id) REFERENCES batch(batch_id),
CONSTRAINT pk_studentID PRIMARY KEY (batch_id,dept_id,student_id) )
create table files
(
files_name varchar(50) not null ,
files_path varchar(50),
files_data varchar(max),
files_bookmarks xml ,
FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),
CONSTRAINT pk_filesName PRIMARY KEY (files_name) )
해결 방법
라인 :
FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),
잘못되었습니다. 이와 같이 pk_studentID
를 사용할 수 없습니다. 이것은 상위 테이블에있는 PK 제약 조건의 이름 일뿐입니다. 복합 기본 키를 외래 키로 사용하려면 동일한 데이터 유형을 가진 동일한 수의 열 (PK를 구성하는)을 자식 테이블에 추가 한 다음 FOREIGN KEY <에서 이러한 열 조합을 사용해야합니다. / code> 정의 :
CREATE TABLE files
(
files_name varchar(50) NOT NULL,
batch_id varchar(4) NOT NULL, --- added, these 3 should not
dept_id varchar(6) NOT NULL, --- necessarily be NOT NULL
student_id varchar (25) NOT NULL, ---
files_path varchar(50),
files_data varchar(max), --- varchar(max) ??
files_bookmarks xml, --- xml ??
--- your question is tagged MySQL,
--- and not SQL-Server
CONSTRAINT pk_filesName
PRIMARY KEY (files_name),
CONSTRAINT fk_student_files --- constraint name (optional)
FOREIGN KEY (batch_id, dept_id, student_id)
REFERENCES student (batch_id, dept_id, student_id)
) ENGINE = InnoDB ;
참조 페이지 https://stackoverflow.com/questions/10565846
반응형
'MySql' 카테고리의 다른 글
MySQL MYSQL / PHP에서 소수점 두 자리를 표시하는 방법은 무엇입니까? (0) | 2021.02.12 |
---|---|
MySQL Group by 및 Order By와 함께 조인에서 Where 절 사용 (0) | 2021.02.12 |
MySQL 날짜가 datetime보다 오래된 MYSQL 선택 행 (0) | 2021.02.11 |
MySQL Java (Netbeans)를 사용하여 MySQL에 연결할 때 'Communications link failure The last packet sent ...'오류가 표시되는 이유는 무엇인가요? (0) | 2021.02.11 |
MySQL에서 전체 행 업데이트 (0) | 2021.02.11 |
댓글