2010-08-18 9 views
1

Considérez ces plusieurs tableaux:enregistrements Supprimer de plusieurs tables

tab1 
------- 
userid 
email 
address 
environment 

tab2 

------- 
ecode 
company 
policy 

tab3 
------- 
id 
pan no. 
dl no. 

Voici tab1 est la table parent. Je veux supprimer tous les userid de tab1 de tab2 et tab3. Soit userid sera en tab1 ou tab2 ou les deux. Ces tables sont des moyens spécifiques à l'environnement environment/tab1 et environment/tab2.

Comment cela peut-il être fait avec une seule requête?

Répondre

2

Je ne suis pas un expert avec l'AS400, mais je ne connais aucun moyen de le faire dans n'importe quel dialecte SQL. Vous devez démarrer une transaction, effectuer vos suppressions séparées, puis valider la transaction si vous voulez vous assurer que l'action est atomique (ce qui signifie que tout se passe ou que rien ne fonctionne).

Le code ressemblerait probablement quelque chose comme ceci:

BEGIN TRANSACTION 

DELETE FROM tab2 
WHERE userid IN (SELECT userid FROM tab1) 

DELETE FROM tab3 
WHERE userid IN (SELECT userid FROM tab1) 

COMMIT TRANSACTION 

Vous ne précisent pas exactement comment ces tables sont liées, donc je pris une supposition. En outre, vous devriez probablement avoir une gestion des erreurs qui émet un ROLLBACK si une erreur est rencontrée. Je ne connais pas la syntaxe de gestion des erreurs pour AS400 (DB2?), Donc vous aurez besoin de regarder ça.

+0

ok ... pouvez-vous s'il vous plaît me suggérer les étapes .... –

+0

Ajouté .......... –

+4

ok ... pouvez-vous s'il vous plaît me suggérer comment je fais tout, donc je ne ai pas besoin de penser jamais? – MatBailie

0

Les environnements sont-ils sur la même machine? Sinon, vous pourriez vouloir regarder les fichiers DDM. Voir here.

Questions connexes