sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo mantener la restricción de clave externa en diferentes bases de datos?

No puedo pensar en ninguna forma de hacer esto con MySQL estándar.

Podría escribir un complemento para Proxy MySQL , que gestiona la integridad referencial entre las tablas principal y secundaria en diferentes servidores:

  • Interceptar INSERT y UPDATE contra mesa infantil. Consulta de fila coincidente en la tabla principal. Error INSERT /UPDATE si no se encuentra ninguna coincidencia en la tabla principal.

  • Interceptar DELETE contra la tabla principal. Consulta de filas dependientes en la tabla secundaria. Error DELETE si se encuentran filas dependientes en la tabla secundaria. Si la restricción está destinada a admitir el comportamiento en cascada, hágalo en lugar de fallar.

  • Interceptar UPDATE contra la tabla principal. Si el valor de la clave principal cambia como parte de la actualización, consulte las filas dependientes que se encuentran en la tabla secundaria. Error UPDATE si se encuentran filas dependientes en la tabla secundaria. Si la restricción está destinada a admitir el comportamiento en cascada, hágalo en lugar de fallar.

Tenga en cuenta que tendría que mantener la información sobre las restricciones de integridad referencial en su complemento MySQL Proxy (o escribir un archivo de configuración personalizado para su complemento que registre las relaciones). No puede usar FOREIGN KEY convencional sintaxis para declarar dichas restricciones en las instancias de MySQL.