Je ne vois aucun moyen de faire cela avec MySQL standard.
Vous pouvez écrire un plugin pour MySQL Proxy , qui gère l'intégrité référentielle entre les tables parent et enfant sur différents serveurs :
-
Intercepter
INSERTetUPDATEcontre table enfant. Requête pour la ligne correspondante dans la table parent. ÉchecINSERT/UPDATEsi aucune correspondance n'est trouvée dans la table parent. -
Intercepter
DELETEcontre la table parent. Requête pour les lignes dépendantes dans la table enfant. ÉchecDELETEsi des lignes dépendantes ont été trouvées dans la table enfant. Si la contrainte est destinée à prendre en charge le comportement en cascade, faites-le au lieu d'échouer. -
Intercepter
UPDATEcontre la table parent. Si la valeur de la clé primaire change dans le cadre de la mise à jour, recherchez les lignes dépendantes trouvées dans la table enfant. ÉchecUPDATEsi des lignes dépendantes ont été trouvées dans la table enfant. Si la contrainte est destinée à prendre en charge le comportement en cascade, faites-le au lieu d'échouer.
Notez que vous devrez conserver des informations sur les contraintes d'intégrité référentielle dans votre plugin MySQL Proxy (ou écrire un fichier de configuration personnalisé pour votre plugin qui enregistre les relations). Vous ne pouvez pas utiliser la FOREIGN KEY conventionnelle syntaxe pour déclarer de telles contraintes sur les instances MySQL.