SQL ajouter une clé étrangère à la colonne existante

Si j'utilise la commande SQL suivante dans SQL Server 2008 pour mettre à jour une table avec une contrainte de clé étrangère:

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)

UserID étant ma colonne FK dans la table Employees. J'essaie de référencer le UserID dans ma table ActiveDirectories. Je reçois cette erreur:

La clé étrangère 'UserID' fait référence à la colonne invalide 'UserID' dans le référencement tableau "employés".

87
demandé sur DROP TABLE users 2012-04-30 23:34:07

6 réponses

L'erreur indique qu'il n'y a pas de colonne UserID dans votre table Employees. Essayez d'ajouter d'abord la colonne, puis réexécutez l'instruction.

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
161
répondu BluesRockAddict 2012-04-30 19:37:34

Peut-être que vous avez vos colonnes en arrière??

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)           <-- this needs to be a column of the Employees table
REFERENCES ActiveDirectories(id)   <-- this needs to be a column of the ActiveDirectories table

Pourrait-il que la colonne est appelée ID dans le Employees table, et UserID dans le ActiveDirectories table?

Alors votre commande devrait être:

ALTER TABLE Employees
ADD FOREIGN KEY (ID)                   <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID)   <-- column in table "ActiveDirectories" 
16
répondu marc_s 2012-04-30 19:39:31

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Pour autoriser le nommage d'une contrainte de clé étrangère et pour définir une contrainte de clé étrangère sur plusieurs colonnes, utilisez la syntaxe SQL suivante:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
2
répondu Venkatesh Bandarapu 2015-06-23 14:48:26

Façon de créer une clé étrangère correcte pour ActiveDirectories (id), je pense que l'erreur principale est que vous n'avez pas mentionné la clé primaire pour id dans la table ActiveDirectories

0
répondu Siva Ramakrishna 2016-12-01 10:59:55
ALTER TABLE Faculty 
WITH CHECK ADD  CONSTRAINT FKFacultyBook
FOREIGN KEY FacId
REFERENCES Book Book_Id

ALTER TABLE Faculty 
WITH CHECK ADD  CONSTRAINT FKFacultyStudent 
FOREIGN KEY FacId
REFERENCES Student StuId
0
répondu Sandy bhardwaj 2017-09-21 04:27:34

Dans le futur.

ALTER TABLE Employees
ADD UserID int;

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
0
répondu Krishneil 2018-05-24 00:50:11