Comment faire un insert or update dans une View
khichpich
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
ryko1820 Messages postés 1677 Date d'inscription Statut Membre Dernière intervention -
ryko1820 Messages postés 1677 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Update insert oracle
- Touche insert - Guide
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Disk boot failure insert system disk and press enter - Guide
9 réponses
Salut,
Quelques pistes :
https://zoom.us/?utm_source=zoom.fr
https://www.developpez.net/forums/d7314/bases-donnees/ms-sql-server/identity_insert/
Bonne journée
Quelques pistes :
https://zoom.us/?utm_source=zoom.fr
https://www.developpez.net/forums/d7314/bases-donnees/ms-sql-server/identity_insert/
Bonne journée
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 ;-)
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 ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
khichpich disait :
Regarde comment est construite ta vue, tu aura peut être une piste.
You may stop me but you can't stop us all ;-)
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 ;-)
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
et je cherche a afficher tous les grossistes qui ont le même ID_ARTICLE
É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
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) ...
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) ...
on ne peut pas ni modifier ni insérer dans une vue c'est ça le problème
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 ...
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]
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]