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 :

A propos de la désactivation des contraintes check en cas d'insertion massive


Sujet :

Développement SQL Server

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut A propos de la désactivation des contraintes check en cas d'insertion massive
    Hello,

    Je parie que je m'y prends mal et que je devrais faire autrement mais je vais quand même poser la question.

    Comment faire pour désactiver une contrainte de type check le temps d'une insertion mais seulement pour la session en cours ?

    Est-ce seulement possible ?

    J'ai trouvé ceci via google mais c'est manière de faire désactive pour tout le monde. Ce n'est donc pas ce qu'il me faut.

    Sinon, faut passer par une autre instruction ??? Un genre de bulk insert ou autre ??
    Kropernic

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ma question reste ouverte car ça m'intéresse toujours mais je préviens quand même que j'ai résolu mon problème.

    En fait, en voulant accélérer le process, j'ai regardé s'il y avait des indexes manquants et j'en ai trouvé 3. En voulant créer le premier, j'ai reçu un message d'erreur me disant qu'une contrainte check était violé et que ça n'allait pas. Or c'était justement celle qui bloquait ma procédure.

    Je crois que j'ai donc un bug dans la fonction que la contrainte appelle. Mais cela m'a fait penser à autre chose de bien plus vicieux.

    Disons qu'on a une contrainte check sur un table A qui vérifie une condition X. La vérification de cette condition X dépend d'info se trouvant dans une table B.

    Lors de l'insertion, tout se passe bien, la condition X est bien vérifiée et la ligne est insérée. Que se passe-t-il si, par après, la donnée dans B est modifiée de sorte que la condition X n'est plus vérifiée ? Pour ma part, je ne pense pas que la contrainte sur la table A soit réévaluée à ce moment-là.

    Je me trompe ?? Que faut-il faire dans un cas pareil ??
    Kropernic

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Points : 1 668
    Points
    1 668
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Comment faire pour désactiver une contrainte de type check le temps d'une insertion mais seulement pour la session en cours ?
    Désactiver une contrainte pour une session en particulier est un non sens total !

    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Disons qu'on a une contrainte check sur un table A qui vérifie une condition X. La vérification de cette condition X dépend d'info se trouvant dans une table B.

    Lors de l'insertion, tout se passe bien, la condition X est bien vérifiée et la ligne est insérée. Que se passe-t-il si, par après, la donnée dans B est modifiée de sorte que la condition X n'est plus vérifiée ? Pour ma part, je ne pense pas que la contrainte sur la table A soit réévaluée à ce moment-là.
    Un trigger ou une contrainte sur B qui vérifie A, en prenant bien garde de ne pas se lancer dans une boucle infinie.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Désactiver les contraintes pour des tests unitaires
    Par felipe2000fr dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/04/2011, 09h50
  2. select des valeurs d'une contraintes check
    Par Jedi49 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/11/2009, 10h49
  3. [10gR1] Désactivation temporaire des contraintes
    Par Cereal123 dans le forum Oracle
    Réponses: 2
    Dernier message: 09/10/2006, 14h04
  4. [Oracle - SQL] Désactivation des contraintes d'inégrités.
    Par mika0102 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/07/2005, 11h59
  5. [Debutant] Contrainte CHECK
    Par TeQ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/01/2004, 11h18

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