SQL «Ограничение внешнего ключа сформировано неправильно» при ссылке на другой внешний ключ - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать внешний ключ для внешнего ключа (что я считаю возможным), но я получаю сообщение об ошибке, что ограничение сформировано неправильно

CREATE TABLE Staff (
    ssn INT, 
    name VARCHAR(127), 
    gender VARCHAR(127), 
    age TINYINT UNSIGNED, 
    address VARCHAR(255), 
    phone_number CHAR(12), 
    wage FLOAT(3,2), 
    PRIMARY KEY (ssn));
CREATE TABLE Admininstration (
    ssn INT, 
    FOREIGN KEY (ssn) REFERENCES Staff(ssn), 
    PRIMARY KEY (ssn));
CREATE TABLE Wards (
    ward_clerk INT,
    ward_id CHAR(2), 
    floor_number TINYINT, 
    FOREIGN KEY (ward_clerk) REFERENCES Administration(ssn), 
    PRIMARY KEY (ward_id)
);
ERROR 1005 (HY000): Can't create table `HospitalManagement`.`Wards`
       (errno: 150 "Foreign key constraint is incorrectly formed")

Если я изменю последнее утверждение, ссылаясь на таблицу персонала

CREATE TABLE Wards (
    ward_clerk INT, 
    ward_id CHAR(2), 
    floor_number TINYINT, 
    FOREIGN KEY (ward_clerk) REFERENCES Staff(ssn), 
    PRIMARY KEY (ward_id)
);

это работает, но это не то, что я хочу сделать. Если это невозможно, я знаю, как это изменить, но я бы хотел сделать это таким образом. Любые предложения приветствуются.

1 Ответ

0 голосов
/ 16 ноября 2018

При необходимости, сделать столбцы NOT NULL.

Помните о серьезных последствиях безопасности хранения SSN.

wage составляет от -9,99 до 9,99? Дешевые. Не используйте FLOAT для денег; используйте DECIMAL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...