- Ymox,
Bonjour tout le monde !
J’ai un cas que je n’avais pas encore rencontré jusqu’ici.
Soient deux tables a
et b
avec la clé étrangère de b
dans a
. Dans le cadre de migrations "inverses", je dois supprimer des enregistrements de b
et donc avant cela les enregistrements liés de a
. Du fait que les migrations se jouent sur plusieurs environnements, les IDs ne sont pas les mêmes sur chacun d’entre eux, je ne peux donc pas les mettre en dur. Par contre, j’ai une colonne qui elle sert justement à retrouver les mêmes données partout.
Dans l’idée de pré-nettoyer les données de A, je pensais naïvement faire DELETE a FROM a INNER JOIN b ON a.b_id = b.id WHERE b.out IN (…)
. Seulement, sur mon serveur, cela ne fonctionne pas parce qu’apparemment cela fait sauter la contrainte de clé étrangère entre les deux tables.
J’ai essayé avec une sous-requête, soit DELETE a FROM a WHERE a.b_id IN (SELECT id FROM b WHERE out IN (…))
, mais cela pose le même problème.
Est-ce qu’il existe une solution avec une seule requête principale — évidemment sans désactiver ne serait-ce que temporairement la vérification des clés étrangères ?
Merci