2011-03-16 2 views
2

Je veux écrire une requête unique pour stocker les mêmes valeurs dans différents tableaux ex: je suis ayant aa et bb tables.avec un attribut non, adresse, phoneno, ville. dans ce non et la ville sont identiques et restants sont différents. dans les deux tableaux certains attributs sont uniques et certains sont différents et je veux mettre à jour les 2 tables en utilisant une requête dans le serveur sql.requête unique pour stocker des valeurs dans différentes tables

+0

Vous ne pouvez pas mettre à jour deux tables en utilisant une instruction UPDATE. Mais vous pouvez créer une procédure stockée qui fait cela - effectue deux mises à jour séparées qui est. –

+0

pouvez-vous me donner la syntaxe de procédure – Ddev

+0

'CREATE PROCEDURE' http://msdn.microsoft.com/fr-fr/library/ms187926.aspx –

Répondre

2

Vous devrez obtenir un peu plus avancé qu'une simple requête pour y parvenir. Mon conseil serait que vous devriez normaliser votre conception pour mettre le nombre et la ville dans une table séparée et puis simplement créer un lien vers cette table dans les deux autres tables.

En général, vous ne devez pas dupliquer des informations dans plusieurs tables. Cependant, il y a des exceptions à cela.


Cependant, vous ne l'avez pas demander des conseils afin que vous pourriez avoir des raisons de le faire de la façon dont vous avez demandé. Si c'est toujours le chemin que vous voulez suivre, vos options sont dictées par la saveur de SQL que vous utilisez. Sur de nombreuses plateformes SQL, vous pouvez accomplir ceci avec une procédure stockée. Sur certains, vous pouvez utiliser une vue, un déclencheur et une procédure stockée. Je vais vous donner un synopsis rapide de chaque option.

- Procédure stockée Ecrire une ou plusieurs procédures stockées (peut-être un pour insérer, mettre à jour, supprimer) Ces procédures prennent vos valeurs en tant que paramètres. Les procs exécutent alors les requêtes sur chacune des tables les unes après les autres.

- Procédure stockée + Voir + Trigger (Vous pouvez le faire sur le serveur MS SQL, mais je ne suis pas sûr d'autres.) Ici vous créez une vue unique qui fusionne vos deux tables. (se joindre à vos champs communs.) Cela vous donne une vue qui est essentiellement les deux tables jointes. Maintenant, puisque cette vue est basée sur deux tables, elle devient une vue non mise à jour. Cependant, vous pouvez attacher des procédures stockées à la vue pour les opérations d'insertion, de mise à jour et de suppression. Ici vous faites la même chose que dans la première méthode, vous créez plusieurs procs pour réellement mettre à jour les données dans les deux tables sous la vue. Ces procédures sont un peu différentes car elles doivent être conçues pour fonctionner comme déclencheurs. Vous attachez ensuite ces procédures à l'insertion, à la mise à jour ou à la suppression des déclencheurs de la vue. En fin de compte, vous devriez pouvoir directement insérer, mettre à jour ou supprimer des données sur la vue et voir les changements dans les tables sous-jacentes.


Si tout cela semble vraiment compliqué, c'est parce que c'est. Si vous avez une autre option comme la normalisation de votre structure de données pour résoudre le problème, vous devriez d'abord essayer. Si vous n'avez vraiment pas le choix et que les déclencheurs sont disponibles, les 2ème options fonctionnent très bien.

Questions connexes