web-dev-qa-db-fra.com

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 faire référence àUserIDdans ma table ActiveDirectories. Je reçois cette erreur:

La clé étrangère 'UserID' fait référence à la colonne non valide 'UserID' dans le référencement tableau 'Employés'.

93
ExceptionLimeCat

Erreur indique qu'il n'y a pas de colonne ID utilisateur 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);
171
BluesRockAddict

Peut-être que vous avez vos colonnes à l'envers ??

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

Se pourrait-il que la colonne s'appelle ID dans la table Employees et UserID dans la table ActiveDirectories?

Alors votre commande devrait être:

ALTER TABLE Employees
ADD FOREIGN KEY (ID)                   <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID)   <-- column in table "ActiveDirectories" 
17
marc_s

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 FOREIGN KEY et pour définir une contrainte FOREIGN KEY 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

A l'avenir. 

ALTER TABLE Employees
ADD UserID int;

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
0
Krishneil

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

0
Siva Ramakrishna
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
Sandy bhardwaj