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

SQL Oracle Discussion :

trigger pour supprimer une ligne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de hammag
    Profil pro
    Inscrit en
    Février 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 511
    Par défaut trigger pour supprimer une ligne
    bonjour,

    je cherche à développer un trigger qui chaque fois que j'insère une ligne dans une table, le trigger vérifie si cette ligne existe ou non :
    exemple:
    tab (A,B, C)
    si la ligne (1, aa, commentaire) existe dans la table tab, et que je cherche insérer la ligne (1, aa, blabla), mon trigger va refuser cette insertion.
    j'ai essayé avec ce code mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    CREATE OR REPLACE TRIGGER DELETE_INT
      AFTER INSERT
      ON tab       
      FOR EACH ROW 
      BEGIN
    	if :NEW.A = :OLD.A and  :NEW.B = :OLD.B  then
    		delete from tab 
    		where A = :NEW.A and B = :NEW.B;
      END;
    j'ai besoin d'aide SVP,

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    normal car ta table est en mutation
    tu peux lever une exception sur un trigger before insert
    sinon c'est plutôt à l'application de faire la vérification
    ou alors tu remplace le INSERT applicatif par un MERGE qui fait soit l'insertion soit la maj si besoin
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ou plus simple, crée un index unique sur tes colonnes.

    De plus, je pense qu'il faut que tu revois le fonctionnement des triggers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF :NEW.A = :OLD.A AND  :NEW.B = :OLD.B
    Pour un INSERT, :old vaudra toujours NULL.
    :new correspond aux données actuellement mises à jour (donc renseigné pour les insert et update, mais pas les delete)
    :old correspond aux données correspondantes en base (donc renseigné pour les delete, update).

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Tu peux créer une contrainte d'unicité (UNIQUE KEY).

Discussions similaires

  1. trigger pour supprimer les lignes d'une table
    Par gilles_906 dans le forum Requêtes
    Réponses: 11
    Dernier message: 15/12/2012, 15h54
  2. Réponses: 1
    Dernier message: 28/03/2008, 21h37
  3. Access, requete pour supprimer une ligne ?
    Par floran30 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/06/2006, 11h13
  4. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  5. Réponses: 1
    Dernier message: 17/05/2006, 09h19

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