Una llave foránea (foreign key) es una columna o combinación de columnas usadas para establecer y asegurar una conexión entre dos tablas. Al agregar una columna (o columnas) a una de las tablas y definir estas columnas con una restricción FOREIGN KEY se crea una conexión entre dos tablas. Las columnas tendrán únicamente valores que se encuentren en las columnas de la clave primaria de la segunda tabla.
Una tabla puede tener múltiples restricciones FOREIGN KEY.
Se puede crear una llave foránea definiendo una restricción FOREIGN KEY cuando se crea o modifica una tabla. Además de a una PRIMARY KEY, una llave foránea puede referenciar a una restricción UNIQUE en otra tabla.
Una restricción FOREIGN KEY puede contener valores nulos; sin embargo, si cualquier columna de una restricción FOREIGN KEY compuesta contiene valores nulos, la verificación de la restricción FOREIGN KEY será omitida.
Una restricción FOREIGN KEY puede referenciar columnas en tablas de la misma base de datos o dentro de la misma tablas (tablas auto-referenciadas).
Aún cuando el propósito primario de una restricción FOREIGN KEY en es el de controlar que datos pueden ser guardados en la tabla de la clave ajena, también controla cambios a datos en la tabla de la clave primaria.
La restricción fuerza la integridad referencial al asegurar que no se puedan hacer cambios en los datos en la tabla de la clave primaria si esos cambios invalidan la conexión a los datos de la tabla de la clave ajena. Si se trata de eliminar una fila en la tabla de clave primaria o de cambiar un valor de clave primaria, dicha acción no se ejecutará si el valor de clave primaria cambiado o eliminado corresponde a un valor en la restricción FOREIGN KEY de otra tabla.
Para cambiar o eliminar una fila en una restricción FOREIGN KEY, se debe primero o bien eliminar los datos correspondientes en la tabla de llave foránea o cambiar los datos de lave foránea en la tabla de llave foránea, a través de conectar la llave foránea a distinto valor de la llave principal.