Поэтому я пытаюсь создать таблицы, и я не могу понять, почему я понимаю, почему я продолжаю получать и ошибаться, говоря "Не могу добавить внешний ключ к ограничению".
Типы одинаковы, родительский - это первичный ключ, и они NULLness одинаковы.
Проблема заключается в строке в таблице создания для 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),