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 :

Forcer une valeur NULL


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut Forcer une valeur NULL
    * Bonjour, *

    La demande est un peu bizarre mais imaginons une base alimentée par un CRM.
    Pour des besoins particuliers, je souhaite que, même si le CRM souhaite remplir une colonne, je force la valeur à NULL et cela sans avoir un retour d'erreur du moteur.

    A part utiliser un trigger after, il y a une autre solution ?
    J'essaye avec les contraintes, mais lorsque j'essaye d'insérer, il refuse complètement la ligne et me retourne une erreur, ce qui est normal.

    * Merci *

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    A part utiliser un trigger after, il y a une autre solution ?
    plutôt un trigger instead of :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TRIGGER [dbo].[MonTrigger]
       ON  [dbo].[MaTable]
       INSTEAD OF INSERT
    AS 
    BEGIN
     
    	INSERT INTO MaTable(A,B)
    	SELECT NULL, B
    	FROM INSERTED
    END

  3. #3
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    C'est vrai, c'est peut-être mieux avec instead of.
    Je n'ai pas précisé mais ça peut être en cas d'insert ou d'update.

    mais l'idée est tout de même de ne pas utiliser de trigger du tout si possible ?

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quel serait le besoin "après" d'avoir cette colonne nulle ?

  5. #5
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Le CRM met à jour cette colonne automatiquement, alors que dans le cas de ce paramétrage précis, pour ce client, je ne veut pas qu'il puisse modifier cette valeur.
    Sans avoir la possibilité d'agir sur le CRM à ce niveau, je comptais le faire au niveau SQL, si possible sans trigger.

  6. #6
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 201
    Billets dans le blog
    16
    Par défaut Vessie ou lanterne
    Un moyen d'éviter les mises à jour d'une colonne est de leurrer le CRM en lui faisant prendre une vessie pour une lanterne, c'est-à-dire de lui faire mettre à jour une vue plutôt qu'une table de base, vue dans laquelle ne figurent pas les noms des colonnes justement interdites de mise à jour.

    Le sage Waldar a-t-il une opinion à ce sujet ? Peut-être que le bouillant SQLpro a rédigé des billets en ce sens ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Un question me taraude depuis le début de cette discussion...

    par curiosité Jinroh77, pourquoi est-ce que :
    Citation Envoyé par Jinroh77 Voir le message
    l'idée est tout de même de ne pas utiliser de trigger du tout si possible ?
    ?

  8. #8
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Bonjour,
    Merci à tous vos apports sur cette discussion.
    Je vais voir du côté de la vue si au moins on peut jouer sur le CRM à ce niveau mais je ne suis pas sûr.

    Pour répondre à cette dernière question, l'idée est d'un point de vue performance. J'avais peur qu'à partir d'un CRM générant beaucoup d'activité à ce niveau, le trigger pouvait plus consommer qu'une autre méthode.
    D'où le fait de penser à quelque chose de simple et efficace, mais visiblement ce n'est pas possible.

  9. #9
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    La solution de passer par une vue sans trigger est élégante je trouve (qui respecte bien la 6ème règle de Codd) mais pour cela il faudrait avoir comme hypothèse que Jinroh77 puisse avoir accès au code du CRM concerné.

    ++

Discussions similaires

  1. Forcer affichage d'une valeur nulle
    Par francoisK dans le forum Webi
    Réponses: 10
    Dernier message: 27/07/2007, 16h17
  2. forcer l'affichage d'une valeur null
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 09h52
  3. [vb.net] tester une valeur nulle de maniere elegante
    Par graphicsxp dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/08/2005, 15h36
  4. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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