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

Requêtes MySQL Discussion :

Créer un trigger


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Par défaut Créer un trigger
    Bonjour,

    Auriez vous un exemple pour créer un TRIGGER qui me permet avant d'inserer dans mysql de vérifier si un champ contient déjà cette valeur sur une dès ligne de la table.

    IF EXISTS(SELECT * FROM MaTable WHERE Champs1='toto'), tu ajoutes pas, tu ajoutes ) mais comment faire cela avec un trigger ?

    Merci de votre aide ,

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Créez une contrainte d'unicité sur cette colonne

  3. #3
    Membre éclairé Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Par défaut
    Bonjour et merci pour la réponse mais cette solution n'est pas celle que je recherche que l'index unique empêchera d’écrire dans le sgbd les personnes ayant le même mail alors que moi je souhaite qu'ils soient ajouté au CRM mais en cochant dés leur entrée IsDoublon = true.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par chris81 Voir le message
    Bonjour et merci pour la réponse mais cette solution n'est pas celle que je recherche que l'index unique empêchera d’écrire dans le sgbd les personnes ayant le même mail alors que moi je souhaite qu'ils soient ajouté au CRM mais en cochant dés leur entrée IsDoublon = true.
    Ce que vous ferez sera de la redondance et c'est stupide !

    En effet il vous faudra écrire 3 déclencheurs :
    • INSERT
    • UPDATE (si l'on modifie le mail)
    • DELETE

    Qui péserons fortement sur les performances du fait des verrous en écriture...

    Il serait beaucoup plus intelligent de travailler avec une vue qui vous donnera cette information de manière toujours synchrone et sans redance..

    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE VIEW V_MaTable
    AS
    SELECT TOut.*,
           CASE WHEN EXISTS(SELECT NULL 
                            FROM   MaTable AS TIn 
                            WHERE  TIn.Colonne1 = TOut.Colonne1
                              AND   TIn.LaClef <> TOut.LaClef) 
                   THEN True
                ELSE False
           END AS IsDoublon
    FROM   MaTable AS TOut;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Créer un trigger global sur une base donnée
    Par helmis dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/07/2008, 16h16
  2. MySql, accorder droit pour créer des triggers
    Par arnaudco dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 04/02/2008, 21h23
  3. [Oracle9i] Je ne peux pas créer un trigger
    Par sami_c dans le forum PL/SQL
    Réponses: 7
    Dernier message: 05/12/2007, 22h31
  4. [BDE][ORACLE] Créer un trigger depuis un TQuery
    Par Zatoobux dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/09/2007, 16h21
  5. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 10h12

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