DBAtlas · Atlas d'exploitation des bases de données

ORA-02292: integrity constraint violated - child record found (contrainte d'intégrité violée : enregistrement enfant trouvé)

Oracle

Que signifie cette erreur ?

Une ligne parente a été supprimée ou sa clé modifiée, mais la contrainte de clé étrangère ne l'a pas permis, car des enregistrements enfants dépendants existent.

Cause

Tentative de DELETE d'une ligne parente ayant des enregistrements dans la table enfant ; FK définie sans ON DELETE CASCADE ; enregistrements dépendants non nettoyés au préalable.

Comment la corriger

Supprimez d'abord les enregistrements enfants dépendants ou rattachez-les à un autre enregistrement parent, puis supprimez la ligne parente. Si la règle métier le permet, recréez la clé étrangère avec ON DELETE CASCADE : ALTER TABLE child DROP CONSTRAINT fk_name; ALTER TABLE child ADD CONSTRAINT fk_name FOREIGN KEY (my_column) REFERENCES parent(key_col) ON DELETE CASCADE; Pour trouver les lignes dépendantes, interrogez la table enfant par la clé parente.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur