Как добавить внешний ключ в существующую таблицу? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь добавить внешний ключ в таблицу STUDENTS из таблицы PROGRAMS

ALTER TABLE COLLEGE.dbo.STUDENTS  
        ADD FOREIGN KEY(ProgramId) REFERENCES 
        PROGRAMS(ProgramId);

Но выдается следующая ошибка:

Ссылки внешнего ключа 'ProgramId' недопустимый столбец «ProgramId» в ссылочной таблице «STUDENTS»

Не уверен, что я делаю неправильно, любой совет или решение было бы очень полезно.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Похоже, вы хотите добавить столбец со связанным внешним ключом.

На SQL Сервере вы можете сделать это в одной запятой, например:

ALTER TABLE COLLEGE.dbo.STUDENTS
    ADD ProgramId INTEGER
    CONSTRAINT StudentsProgramIdFk FOREIGN KEY(ProgramId) REFERENCES PROGRAMS(ProgramId);

Вы должны отрегулировать тип данных столбца в соответствии с вашими потребностями. Ключевым моментом является то, что новый столбец должен иметь тот же тип данных, что и столбец, на который он ссылается (то есть PROGRAMS(ProgramId)).

0 голосов
/ 20 февраля 2020

Столбец должен существовать в таблице, прежде чем его можно будет использовать для ссылки на внешний ключ. Поэтому я предполагаю, что вы собираетесь что-то вроде:

ALTER TABLE COLLEGE.dbo.STUDENTS  
        ADD ProgramId INT;  -- have to guess at the type

ALTER TABLE COLLEGE.dbo.STUDENTS  
        ADD FOREIGN KEY (ProgramId) REFERENCES 
        PROGRAMS(ProgramId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...