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

Développement SQL Server Discussion :

Trigger-remplacement champ par Null


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Par défaut Trigger-remplacement champ par Null
    Aprés plusieurs recherches sans solution j'aimerais connaitre la syntaxe pour pouvoir ,à l'aide d'un trigger, remplacer un champ quelconque enregistré en champ "Null" lors de l'update de la colonne et n'enregistrer ces champs que lorsque l'un de ces champs contient une chaîne de caractères particuliers.

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TRIGGER TR_A_IU_maTable
    	ON dbo.maTable
    AFTER INSERT, UPDATE
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	UPDATE dbo.maTable
    	SET maColonne = CASE
    						WHEN I.maColonne LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne
    						ELSE NULL
    					END
    	FROM dbo.maTable AS T
    	JOIN INSERTED AS I
    		ON T.PK_ID = I.PK_ID
    END
    remplacer un champ quelconque enregistré en champ "Null"
    Non, vous voulez remplacer les valeurs d'une colonne par NULL (qui n'est pas une valeur: c'est justement l'absence de valeur)

    @++

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Par défaut
    Avec ce bout de code j'enregistre les valeurs ne contenant que ma chaîne de caractères des colonnes choisies et les autres colonnes prennent une absence de valeur c'est bien ca?

    PS: en me relisant j'ai l'impression de m'être plutot mal exprimé^^

    D'un côté j'ai 6 colonnes dont je veux sauvegarder le contenu seulement lorsque la valeur de la 4eme colonne (par exemple) contient une chaîne de caractères bien précise. (qui peut être complété par d'autres caractères ou non)

    Et de l'autre je veux que toutes les autres colonnes autres que ces 6 prennent une absence de valeur (Null)


    Ca sera peut être un peu plus clair

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 : 21 999
    Billets dans le blog
    6
    Par défaut
    Ce serait notablement plus clair si vous respectiez la charte de postage :
    http://www.developpez.net/forums/d96...vement-poster/
    Notamment en nous fournissant une description détaillé des tables + jeu d'essais + résultats sous la forme décrite dans le document ci dessus !

    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/ * * * * *

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Merci SQLPro

    Je donne néanmoins une pseudo-solution, qui me semble assez lourde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    CREATE TRIGGER TR_A_IU_maTable
    	ON dbo.maTable
    AFTER INSERT, UPDATE
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	UPDATE dbo.maTable
    	SET maColonne1 = CASE
    						WHEN I.maColonne4 LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne1
    						ELSE NULL
    					END
    	SET maColonne2 = CASE
    						WHEN I.maColonne4 LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne2
    						ELSE NULL
    					END
    	SET maColonne3 = CASE
    						WHEN I.maColonne4 LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne3
    						ELSE NULL
    					END
    	SET maColonne5 = CASE
    						WHEN I.maColonne4 LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne5
    						ELSE NULL
    					END
    	SET maColonne6 = CASE
    						WHEN I.maColonne4 LIKE '%chaîneDeCaractèresParticuliers%' THEN I.maColonne6
    						ELSE NULL
    					END
    	FROM dbo.maTable AS T
    	JOIN INSERTED AS I
    		ON T.PK_ID = I.PK_ID
    END
    @++

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/10/2010, 14h50
  2. [Requête/SQL]Remplacer champ par valeur autre champ
    Par BORDEAUX4 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/04/2007, 11h05
  3. Remplacement 0 par NuLL
    Par le_sonic dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/03/2007, 11h53
  4. Réponses: 3
    Dernier message: 23/12/2005, 16h13
  5. remplacer des espaces dans un champ par des zero
    Par yeep dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2004, 09h41

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