Para insertar una fila en una tabla con claves externas, el valor de cada clave externa ya debe existir en cada tabla referenciada como clave principal en esa tabla.
Entonces, si una clave aún no existe en la tabla referenciada, primero se debe insertar una fila en esa tabla antes de intentar insertar una fila en la tabla de referencia.
Una excepción a esto ocurre cuando la clave externa permite valores nulos. En ese caso, si el campo es nulo, puede insertar la fila en la tabla ya que no tiene referencia (todavía) a la otra tabla.
- Si cambia el tamaño de una imagen ráster de 1000 × 1000 a 10 × 10 y luego la redimensiona a 1000 × 1000, ¿se considera que esto es un alias en informática?
- Cómo abordar los problemas en SPOJ (lea los detalles)
- Cómo supercomprimir imágenes
- Cómo entender el tamaño correcto del búfer en el desarrollo
- ¿Está preparada la realidad virtual?
Por ejemplo, si tiene una tabla de Empleados con clave principal EmployeeId, y una tabla de Departamentos con una clave principal DepartmentId, y una tabla DepartmentEmployees que relaciona los dos y contiene una clave externa EmployeeId y una clave externa DepartmentId, no puede insertar una fila en DepartmentEmployees para EmployeeId 1201 y Department 24 hasta que haya insertado una fila para EmployeeId 1201 en la tabla Employees y una fila para DepartmentId 24 en la tabla Departments.
El otro aspecto de una restricción de clave primaria / externa, utilizando el ejemplo que se acaba de describir, es que no puede eliminar una fila de, por ejemplo, EmployeeId 3725 de Employees hasta que todas las claves externas que hacen referencia a EmployeeId 3725 se hayan establecido en nulo (si está permitido) o su filas eliminadas
Del mismo modo, cualquier actualización de valores de clave externa debe consistir en claves primarias válidas (existentes) o nulas (donde esté permitido).
Estas reglas aseguran que en todo momento las referencias de claves externas sean válidas; es decir, que las claves principales a las que se refieren realmente existen.