gpt4 book ai didi

mysql - 使用复合主键作为外键

转载 作者:IT王子 更新时间:2023-10-29 00:36:53 26 4
gpt4 key购买 nike

如何将复合主键用作外键?看来我的尝试不起作用。

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< 中使用这些列的组合 定义:

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 ;

关于mysql - 使用复合主键作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com