Comment générer DELETE en PL/SQL, sur la base des tableaux FK relations?

Est-il possible via un script ou un outil pour générer des authomatically de nombreux delete sur la base des tableaux fk relations, à l'aide de Oracle PL/SQL?

Dans l'exemple: j'ai la table: POULET (CHICKEN_CODE NOMBRE) et il y a 30 tables avec fk références à son CHICKEN_CODE que j'ai besoin de supprimer; il y a aussi d'autres 150 tables de clé étrangère liée à celle de 30 tables que j'ai besoin de supprimer en premier.

Est-il un outil ou un script PL/SQL que je peux courir dans le but de générer tout le nécessaire de les supprimer consolidés sur la base de la FK relations pour moi?

(en passant, je sais à propos de supprimer en cascade sur les relations, mais attention: je ne PEUX PAS l'UTILISER DANS MA BASE de données de PRODUCTION, parce que c'est dangereux!)

Je suis en utilisant la Base de données Oracle 10G R2.

S'il vous plaît prêter attention à ceci:

Générer de l'Instruction Delete à Partir des Relations de Clé Étrangère SQL 2008?

Un autre utilisateur a juste écrit-il dans SQL SERVER 2008, toute personne est en mesure de convertir vers Oracle 10G, PL/SQL?
Je ne suis pas capable de... 🙁

Veuillez supposer que V_CHICKEN et V_NATION sont les critères pour sélectionner le POULET à supprimer à partir de la racine de la table: la condition est: "où COD_CHICKEN = V_CHICKEN ET COD_NATION = V_NATION" à la racine de la table.

  • Ce que vous proposez est un manuel de mise en œuvre de la CASACDE SUPPRIMER. Je ne vois pas comment cela pourrait être moins dangereux. De toute façon, la question essentielle est celle-ci: vous allez zap tous les enregistrements de POULET, ou seulement certains (un)?
  • Dans ma situation, j'ai besoin de ZAPPER un seul enregistrement de la poule de la table... Mais a partir de cette simple enregistrement par le biais de l'intégrité référentielle, nous descendons à de nombreuses personnes et de nombreux tableaux en fonction de ça... je peux compter une env profondeur de niveau 7 (!!).
  • J'ai mis à jour ma réponse avec un script pour vous d'essayer. Aucune garantie que...
  • Je suis en train d'essayer le script. Peut-être qu'il ne gère pas la propagation de la intégrités référentielles à d'autres utilisateurs, comment puis-je résoudre ce problème? Dans l'intervalle, le script vient de générer plus de 3129 SUPPRIMER l'INSTRUCTION que j'étais attendue à écrire à la main! 🙂
  • Merci de m'aider à comprendre pourquoi la procédure stockée est cyclying toujours sur le même 39 delete.....
  • Vous savez quoi, je ne pense pas que c'est pas aussi dur que je le pensais. Je pourrais être en mesure de le corriger si j'ai du temps aujourd'hui.
  • J'ai mis à jour ma réponse avec un nouveau script. Cela fonctionne pour moi mais je suspecte qu'il pourrait y avoir des problèmes si vous avez des relations complexes. Essayez-le et laissez-moi savoir comment ça se passe. 🙂
  • Pourquoi êtes-vous à la programmation en "mode découverte"? C'est comme "je n'ai aucune idée de quel type de base de données, c'est, ni comment les tables sont disposées et connecté, je sais juste que j'ai besoin de supprimer une ligne dans l'un d'eux". Vous n'avez pas une bonne couche d'accès aux données de cette base de données?
  • ... OP sez: "effacer en cascade sur les relations ...je ne PEUX PAS l'UTILISER DANS MA BASE de données de PRODUCTION, parce que c'est dangereux!". Et vous pensez que l'obtention d'un script à partir de l'internet (OK, DONC) et en cours d'exécution sur votre base de données de production est moins dangereux? En fin de compte, vous allez comprendre quelque soit la solution que vous accepter dans le détail parce que c'est ta peau en jeu.
  • Je vous demande de vous rendre clair, je ne comprends pas votre dernière phrase.
  • "Je vais comprendre quelque soit la solution que j'accepte dans le détail parce que c'est ma cacher en jeu"???? ÇA VEUT DIRE QUOI? Je comprends les mots, mais pas le sens de la phrase complète.
  • Il signifie que lorsque votre bout est sur la ligne (de votre travail est à risque), vous allez ASSUREZ-vous que le code que vous utilisez est sûr, indépendamment de l'endroit où vous l'avez obtenu.
  • Merci pour la traduction, Charles 🙂 je n'ai jamais vu/entendu l'expression "ton cul est sur la ligne" 🙂 Mais maintenant, c'est clair. J'ai essayé de nombreuses fois de votre procédure et il fonctionne très bien, bien sûr, je ne décolle pas de la supprimer sans avoir au préalable soigneusement les lire!!! 😉 Je utiliser pour stocker la suppression dans une table temporaire, puis les enregistrer dans un fichier, et puis j'ai lu attentivement eux à l'aide d'UltraEdit ou le CRAPAUD de l'Éditeur SQL.

InformationsquelleAutor UltraCommit | 2010-04-20