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".
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);
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"
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)
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
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
Dans le futur.
ALTER TABLE Employees
ADD UserID int;
ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id);