Si estoy usando el siguiente comando SQL en SQL Server 2008 para actualizar una tabla con una restricción de clave externa:
ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
UserID
siendo mi columna FK en la Employees
tabla. Estoy tratando de hacer referencia a UserID
en mi ActiveDirectories
tabla. Recibo este error:
La clave externa 'UserID' hace referencia a la columna no válida 'UserID' en la tabla de referencia 'Empleados'.
sql-server-2008
foreign-key-relationship
ExcepciónLimeCat
fuente
fuente
Respuestas:
El error indica que no hay una columna de ID de usuario en su tabla de empleados. Intente agregar la columna primero y luego vuelva a ejecutar la declaración.
fuente
There are no primary or candidate keys in the referenced table 'ActiveDirectories' that match the referencing column list in the foreign key 'FK__Employees__UserI__04E4BC85'.
¿Quizás tienes tus columnas al revés?
¿Podría ser que la columna se llame
ID
en laEmployees
tabla yUserID
en laActiveDirectories
tabla?Entonces tu comando debería ser:
fuente
MySQL / SQL Server / Oracle / MS Access:
Para permitir el nombramiento de una restricción FOREIGN KEY y para definir una restricción FOREIGN KEY en varias columnas, utilice la siguiente sintaxis SQL:
MySQL / SQL Server / Oracle / MS Access:
fuente
fuente
forma de creación de clave externa correcta para ActiveDirectories (id), creo que el error principal es que no mencionó la clave principal para id en la tabla ActiveDirectories
fuente
En el futuro.
fuente