mysql - 这里不能添加外键吗?

标签 mysql sql foreign-keys

所以我正在尝试创建表,但我一生都无法理解为什么我不断收到错误消息“无法将外键添加到约束”。

类型相同,父键为主键,NULL 值相同。

问题出在 CDSingers 创建表的行中,其中显示:

foreign key (track_num) references CDTracks (track_num),

(快结束了) 这是唯一一个不会被创建的表,这是因为这一行。 请帮忙。 (其他一些表已被省略,因为它们未连接)

create table CD 
(
num int NOT NULL, 
producer varchar(100) NOT NULL, 
cd_number varchar(100) NOT NULL, 
title varchar(100) NOT NULL, 
type varchar(100) , 
band_name varchar(100) , 
production_date DATE NOT NULL, 
price double CHECK (price >= 0),
foreign key (type) references MusicType (type), 
foreign key (band_name) references Band (band_name),
primary key (num),
unique (producer, cd_number)
);

create table CDTracks
(
num int NOT NULL,
track_num int NOT NULL,
song_name varchar(100) NOT NULL,
minute int NOT NULL,
foreign key (num) references CD (num),
primary key (num, track_num)
);

create table Singer
(
id int NOT NULL,
singer_firstname varchar(100) NOT NULL,
singer_lastname varchar(100) NOT NULL,
primary key (id)
);

create table CDSingers
(
num int NOT NULL,
track_num int NOT NULL,
singer_id int NOT NULL,
foreign key (num) references CDTracks (num),
foreign key (track_num) references CDTracks (track_num),
foreign key (singer_id) references Singer (id),
primary key (num, track_num, singer_id)
);

最佳答案

您可以像这样声明复合外键:

foreign key (num, track_num) references CDTracks (num, track_num),

关于mysql - 这里不能添加外键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48896266/

相关文章:

mysql - 无法在远程Linux服务器上的Dreamweaver CS6和MySQL之间建立链接

sql - 更改 '.CommandText' 不会添加新列

postgresql - 非公共(public)模式中的 Postgres 外键约束

php - 无法插入外键值

php - 建议SQL查询

java - 如何对 JOptionPane.showMessageDialog 的 OK 执行操作

sqlite3,通过索引检索行元素的最佳方法?

sql - 在 SQL 中为主键选择字符变化数据类型的优缺点是什么?

mysql - 日期范围内的总价(如酒店预订季节)

sql - 艰难地学习 SQL - 练习 3 - 插入数据 - 找不到文件