IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Suppression d'un enregistrement à partir d'une vue avec jointure


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 60
    Points
    60
    Par défaut Suppression d'un enregistrement à partir d'une vue avec jointure
    Bonjour à tous

    J'essayes désespérément de faire fonctionner la suppression d'un enregistrement à partir d'une vue qui dispose d'une jointure avec une autre table. La jointure est du type "INNER JOIN" basée sur un champ de type interger indexé.

    Dès que je tente de supprimer un enregistrement à partir de la vue j'ai le message :
    "La vue ou la fonction 'mavue' ne peut pas être mise à jour car la modification affecte les tables de base multiples."

    D'où ma question : est-il possible de faire cela sous SQL Server ? Si oui, sous quelles conditions ?

    Merci pour votre aide...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 60
    Points
    60
    Par défaut Solution
    Je me répond à moi même :

    Pour que cela fonctionne, il faut créer un TRIGGER qui va prendre en charge la suppression de l'enregistrement dans la vue. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER [SupMaVue] ON [dbo].[MaVue] 
    INSTEAD OF  DELETE 
    AS
    BEGIN
      DECLARE @ID_ENREG  int
      SELECT @ID_ENREG=id_enreg from DELETED
      DELETE FROM MaTable where id_enreg=@ID_ENREG
    END
    et le tour est joué

    Dans mon exemple, la table principale est MaTable. C'est sur cette table que porte la suppression.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2014, 10h35
  2. Suppression d'enregistrement à partir d'une liste
    Par HelpJulien dans le forum QlikView
    Réponses: 8
    Dernier message: 15/05/2013, 11h16
  3. [AC-2000] Suppression d'un enregistrement à partir d'une zone de liste
    Par DeFCrew dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/09/2009, 15h11
  4. Faire un UPDATE à partir d'une sélection avec jointure
    Par grping dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/03/2009, 17h06
  5. update a partir d'une vue
    Par jlamazou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/09/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo