Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como manter a restrição de chave estrangeira em diferentes bancos de dados?


Não consigo pensar em nenhuma maneira de fazer isso com o MySQL padrão.

Você pode escrever um plugin para MySQL Proxy , que gerencia a integridade referencial entre as tabelas pai e filho em diferentes servidores:

  • Interceptar INSERT e UPDATE contra a mesa filho. Consulta para linha correspondente na tabela pai. Falha INSERT /UPDATE se nenhuma correspondência for encontrada na tabela pai.

  • Interceptar DELETE contra a tabela pai. Consulta de linhas dependentes na tabela filha. Falha DELETE se alguma linha dependente for encontrada na tabela filha. Se a restrição for destinada a dar suporte ao comportamento em cascata, faça isso em vez de falhar.

  • Interceptar UPDATE contra a tabela pai. Se o valor da chave primária estiver mudando como parte da atualização, consulte as linhas dependentes encontradas na tabela filha. Falha em UPDATE se alguma linha dependente for encontrada na tabela filha. Se a restrição for destinada a dar suporte ao comportamento em cascata, faça isso em vez de falhar.

Observe que você teria que manter informações sobre as restrições de integridade referencial em seu plug-in MySQL Proxy (ou escrever um arquivo de configuração personalizado para seu plug-in que registre os relacionamentos). Você não pode usar a FOREIGN KEY convencional sintaxe para declarar tais restrições nas instâncias do MySQL.