Могут ли все таблицы в базе данных содержать внешние ключи? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать такие таблицы, как это

CREATE TABLE department(d_name varchar(20) NOT NULL,
e_ssn int,
d_no int primary key,
mng_ssn int,
CONSTRAINT `fk_mng_ssn`
FOREIGN KEY (mng_ssn) REFERENCES Employee (ssn)
ON DELETE null) ENGINE = InnoDB;

create table Employee(f_name varchar(20) not null,
ssn int primary key,
sex varchar(5),
d_no int,
super_ssn int,
CONSTRAINT `fk_d_no`
FOREIGN KEY (d_no) REFERENCES department (d_no)
ON DELETE null) ENGINE = InnoDB;

create table dependant(dependant_name varchar(20) not null,
e_ssn int,
sex varchar(5),
CONSTRAINT `fk_e_ssn`
FOREIGN KEY (e_ssn) REFERENCES Employee (ssn)
ON DELETE CASCADE,
primary key (e_ssn,dependant_name)) ENGINE = InnoDB;

здесь все таблицы содержат внешние ключи, вот почему я получаю errno: 150 «Ограничение внешнего ключа неправильно сформировано» в mariadb.

1 Ответ

1 голос
/ 26 июня 2019

Вы должны объявить таблицы в правильном порядке, чтобы избежать ошибки 150.

Или не добавлять (через ALTER TABLE) FK до тех пор, пока после CREATEing не будут все таблицы.

...