SQL suppression d'une ligne de retour- “ORA-02292: contrainte d'intégrité (..) a violé l'enfant enregistrement trouvé”
J'ai une base de données constituée de quatre tables. Relation de schéma comme suit dans l'image:
Et voici les lignes:
Maintenant, je vais essayer de supprimer le propriétaire avec l'id du propriétaire OW1
. Parce que l'id est une clé primaire dans propriétaire de la table et la clé étrangère dans une autre table sa ne m'autorise pas à supprimer la ligne. Voici le SQL j'ai essayé:
delete from owners
where ownerid = 'OW1' and petid = 'PT1'
Et il retourne :
ORA-02292: integrity constraint (TEST_1.ADDRESSES_OWNERS_FK) violated - child record found
Et je ne suis pas autorisé à définir la règle de suppression de "CASCADE" diagramme.
S'il vous plaît aider 🙁
vous ne pouvez pas le supprimer parce que c'est une clé étrangère de PT1 sur les animaux de compagnie de la table, ainsi qu'une clé étrangère sur le contact et l'adresse de la table. Vous devez supprimer ces enregistrements
Pouvez-vous supprimer les entrées de CONTACTS et l'ADRESSE du propriétaire, que la SUPPRESSION DE contacts où ownerid = 'OW1'; et de SUPPRIMER à PARTIR de l'adresse où les ownerid = 'OW1';?
oui, je peux. Mais j'ai pour supprimer l'entrée du propriétaire de la table. Si je peux les supprimer en une seule instruction, il est encore acceptable. Je veux dire, je sais que je dois supprimer les clés étrangères d'abord chez les animaux de compagnie, les contacts, l'adresse, d'abord, puis de le supprimer dans les propriétaires de la table, mais il doit être fait dans la même déclaration.
Je veux essayer quelque chose de semblable, ils ont mentionné à ici... juste ne sais pas comment...
vous pouvez désactiver les contraintes de clé étrangère stackoverflow.com/questions/15501673/...
Pouvez-vous supprimer les entrées de CONTACTS et l'ADRESSE du propriétaire, que la SUPPRESSION DE contacts où ownerid = 'OW1'; et de SUPPRIMER à PARTIR de l'adresse où les ownerid = 'OW1';?
oui, je peux. Mais j'ai pour supprimer l'entrée du propriétaire de la table. Si je peux les supprimer en une seule instruction, il est encore acceptable. Je veux dire, je sais que je dois supprimer les clés étrangères d'abord chez les animaux de compagnie, les contacts, l'adresse, d'abord, puis de le supprimer dans les propriétaires de la table, mais il doit être fait dans la même déclaration.
Je veux essayer quelque chose de semblable, ils ont mentionné à ici... juste ne sais pas comment...
vous pouvez désactiver les contraintes de clé étrangère stackoverflow.com/questions/15501673/...
OriginalL'auteur envyM6 | 2014-04-22
Vous devez vous connecter pour publier un commentaire.
Bien, si un bloc anonyme compte comme une seule instruction, juste envelopper de votre supprime en un bloc:
SQL Violon. Semble comme un peu de triche, mais si ceux-ci sont les conditions que vous avez été donné...
vrai, mais ce serait plusieurs états, et je devine que si les contraintes ne peuvent pas être modifiés alors qu'ils ne peuvent pas être désactivés. Qui sait, avec des règles artificielles. (Mais alors cascade est dangereux, donc peut-être que ce n'est pas tellement artificiel; la désactivation est aussi dangereux si ce n'est pas un système si).
D'accord. Avec ce grand nombre de contraintes, il doit être vraiment actif/inactif système de drapeau plutôt que de supprimer des trucs
Grâce lemme essayer 🙂
yep qui a fait le travail 🙂 merci beaucoup
OriginalL'auteur Alex Poole