[SQL] 외래 키 등을 사용하여 복합 기본 키
SQL외래 키 등을 사용하여 복합 기본 키
어떻게 외부 키로 복합 기본 키를 사용할 수 있습니까? 내 시도가 작동하지 않는 것 같습니다.
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) )
해결법
-
==============================
1.라인 :
라인 :
FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),
잘못된 것입니다. 이 부모 테이블의 PK 제약 조건의 이름 만입니다, 그런 pk_studentID을 사용할 수 없습니다. 화합물 외래 키 등 기본 키를 사용하려면, 당신은 자식 테이블에 같은 데이터 유형과 동일한 수의 열을합니다 (PK를 구성하는) 추가 한 다음 FOREIGN KEY 정의에서이 컬럼의 조합을 사용해야합니다 :
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 ;
from https://stackoverflow.com/questions/10565846/use-composite-primary-key-as-foreign-key by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL - 조건이 문제가 WHERE의 순서를합니까? (0) | 2020.05.03 |
---|---|
[SQL] 별도 쉼표 SQL 서버 테이블 값 저장소를 분리 (0) | 2020.05.03 |
[SQL] SQL의 가난한 저장 프로 시저 실행 계획 성능 - 매개 변수 스니핑 (0) | 2020.05.03 |
[SQL] 어떻게 연도를 무시 날짜 계산을해야합니까? (0) | 2020.05.03 |
[SQL] SQL 점 표기법 (0) | 2020.05.03 |