Ссылка на первичный ключ дважды как внешний ключ в MS Access с использованием SQL вызывает ошибку - PullRequest
0 голосов
/ 14 апреля 2020

Я получаю сообщение об ошибке, когда пытаюсь сослаться на первичный ключ как на внешний ключ в других запросах:

В текущей базе данных уже есть связь с именем "DepartmentNameFK".

CREATE TABLE PROJECT 
(
    ProjectID varchar(50),
    Name varchar(50),
    MaxHours FLOAT,
    StartDate Date,
    EndDate Date,
    DepartmentName varchar(50),

    CONSTRAINT ProjectIDPK PRIMARY KEY (ProjectID),
    CONSTRAINT DepartmentNameFK FOREIGN KEY (DepartmentName) **[ so here I am referencing for the second time, THIS IS NOT PART OF CODE, JUST EXPLANATION]**
REFERENCES DEPARTMENT ON DELETE NO ACTION ON UPDATE CASCADE
);

1 Ответ

0 голосов
/ 14 апреля 2020

Ошибка кажется очень очевидной - у вас уже есть ограничение внешнего ключа с именем DepartmentNameFK - но все объекты базы данных (и ограничения являются объектами базы данных) должны иметь уникальное, отдельное имя, чтобы вы могли ссылаться на них.

Так вот - просто назовите свое ограничение FK что-то еще :

CREATE TABLE PROJECT 
(
    ProjectID varchar(50),
    Name varchar(50),
    MaxHours FLOAT,
    StartDate Date,
    EndDate Date,
    DepartmentName varchar(50),

    CONSTRAINT ProjectIDPK PRIMARY KEY (ProjectID),
    -- just call the constraint **SOMETHING ELSE** other than "DepartmentNameFK"
    CONSTRAINT DepartmentNameFK2 
        FOREIGN KEY (DepartmentName)
        REFERENCES DEPARTMENT ON DELETE NO ACTION ON UPDATE CASCADE
);

Мое предложение будет назвать ваше имя Ограничения FK

FK_(parent table)_(referenced table)

, поэтому в вашем случае:

FK_Project_Department

Если ваш другой FK находится в другой таблице, это будет

FK_OtherTable_Department

и, таким образом, вы будете не есть конфликты уже существующих имен .....

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