Comment faire un insert or update dans une View

Fermé
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013 - Modifié par khichpich le 20/09/2013 à 11:18
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 23 sept. 2013 à 14:04
Bonjour,

tout est clair dans le titre , je cherche un script pour modifier ou insérer dans une VIEW parce que quand je le fais on me donne erreur :

''La vue ou la fonction 'detail_article' ne peut pas être mise à jour car la modification porte sur plusieurs tables de base.
''

la view est nommée "Detail_article" et contient 2 champs que je souhaite modifier ID_GROSSISTE de la table GROSSISTE et ID_ARTICLE de la table ARTICLE
ces deux table n'ont aucune relation .

J'espère avoir une réponse rapide , c'est vraiment urgent
MERCI
A voir également:

9 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
20 sept. 2013 à 11:12
0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 11:19
pardon, j'ai du me tromper de l'erreur qui s'affiche , j'ai corrigé :)
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 20/09/2013 à 11:27
Hello,

j'ai l'impression qu'on ne peut pas :

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

...
Updatable Views

You can modify the data of an underlying base table through a view, as long as the following conditions are true:

Any modifications, including UPDATE, INSERT, and DELETE statements, must reference columns from only one base table.
...


Il doit falloir modifier les tables directement dans ce cas ...

Tu nous diras ?

You may stop me but you can't stop us all ;-)
0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 11:31
ça c'est un gros problème à expliquer et la modification de la view en fait partie :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 20/09/2013 à 12:46
khichpich disait :
ces deux table n'ont aucune relation . 


Regarde comment est construite ta vue, tu aura peut être une piste.


You may stop me but you can't stop us all ;-)
0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 12:50
enfin pour bien préciser , les deux tables GROSSISTE et ARTICLE n'ont aucune relation entre elles , mais leurs champs ID_GROSSISTE et ID_ARTICLE se rassemblent dans la VUE "Detait_ARTICLE"
et je cherche a afficher tous les grossistes qui ont le même ID_ARTICLE
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
20 sept. 2013 à 13:15
Énoncé comme cela, ça semble simple et Je suis persuadé qu'avec un tout petit peu de SQL il n'y aura pas de problème.

C'est toi qui l'a construite la vue ?

Je connais pas sql server (enfin ça fait super, super longtemps que j'en ai pas fait) mais une rapide recherche me dit que ce doit être un truc comme
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA where TABLE_NAME = "Detail_ARTICLE"
...

Une fois que tu auras la requête ayant servi à la création de la vue, il suffira de la modifier pour correspondre à tes conditions et à ton type d'opération (update) ...


0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 13:22
on ne peut pas ni modifier ni insérer dans une vue c'est ça le problème
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 20/09/2013 à 13:33
Oui mais tu peux le faire dans les tables sur lesquelles elle s'appuie. Il te suffit donc de récupérer la requète de création de la vue pour comprendre comment elle fonctionne et ensuite exploiter cette logique en rajoutant tes conditions à ton update. Sinon il doit même être possible de faire ton update en mélangeant les tables réelles et le résultat du select sur ta vue ... Mais mon SQL est méchamment rouillé ... et j'ai pas de base pour tester ...
0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 13:36
je sais quoi faire dans l'update sur la vue , mais pour modifier la table GROSSISTE il faut faire un WHERE qui contient le champ de la table ARTICLE qui n 'a aucune relation avec GROSSISTE
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 20/09/2013 à 13:41
Elles ont forcement une relation sinon ta vue n'existerait pas, enfin je crois ...
0
khichpich Messages postés 34 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 20 septembre 2013
20 sept. 2013 à 13:48
nn regarde :

SELECT TOP 1000 [ID_ARTICLE]
,[ID_TVA]
,[ID_FAMILLE_ARTICLE]
,[ID_TABLEAU]
,[ID_ETATS_ARTICLES]
,[CODE_ACTE]
,[CODE_TAUX_MARQUE]
,[DESIGNATION_ARTICLE]
,[CONTENANCE_ARTICLE]
,[PRIX_ACHAT_ARTICLE]
,[EMPLACEMENT_ARTICLE]
,[PRIX_VENTE_ARTICLE]
,[NBR_UNITE_ACHAT_ARTICLE]
,[NBR_UNITE_VENTE_ARTICLE]
,[NBR_VENTE_ARTICLE]
,[STOCK_TOTAL_ARTICLE]
,[QTE_RESERVE_ARTICLE]
,[QTE_COMMANDE_ARTICLE]
,[DATE_DERN_SORTIE_ARTICLE]
,[DATE_DERN_ENTREE_ARTICLE]
,[DATE_PREREMPTION_ARTICLE]
,[CPTEUR_PREREMPTION_ARTICLE]
,[PROMOTION_ARTICLE]
,[CONS_MOIS_ARTICLE]
,[NBR_SORTIE_ARTICLE]
,[VENTE_MOIS_ARTICLE]
,[ACHAT_MOIS_ARTICLE]
,[FOURNISSEUR_ARTICLE]
,[REFERENCE_ARTICLE]
,[ID_REMISE]
,[COMMENTAIRE_ARTICLE]
,[DATE_DERNIERE_MODIFICATION]
,[Suppression]
,[Date_Suppression]
,[code_bare]
FROM [Pharmatica11].[dbo].[ARTICLE]

----------------------------------------------------------------------------------------------------------


SELECT TOP 1000 [ID_GROSSISTE]
,[NOM_GROSSISTE]
,[ADRESSE_GROSSISTE]
,[VILLE_GROSSISTE]
,[ZONE_GEO_GROSSISTE]
,[TEL_GROSSISTE]
,[DELAI_GROSSISTE]
,[CONDITION_REGLE_GROSSISTE]
,[CODE_POSTAL_GROSSISTE]
,[CHIFFRE_AFFAIRE_GROSSISTE]
,[COMMENTAIRE_GROSSISTE]
,[FAX_GROSSISTE]
,[MAIL_GROSSISTE]
,[SITE_GROSSISTE]
,[NOM_PRESENTANT]
,[PRENOM_PRESENTANT]
,[RESPONSABILITE_PRESENTANT]
,[TEL_PRESENTANT]
,[MAIL_PRESENTANT]
,[IdentifiantPharmacie]
,[AdresseWebService]
FROM [Pharmatica11].[dbo].[GROSSISTE]
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
20 sept. 2013 à 13:56
... mais alors comment ta vue est construite ? Elle doit s'appuyer sur un autre table qui elle fait le lien ?
0
euh c 'es pas ce que je recherche ^^
0