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

C# Discussion :

Trigger côté .NET


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut Trigger côté .NET
    Bonjour à tous,

    Je voudrais pour renforcer l'intégrité de ma base rajouter des Triggers ...

    Mais je voulais savoir comment traiter les erreurs renvoyer par le Triggers, alors je me demande quel type d'exception un trigger renvoie ? Une SqlException classique ou une erreur d'intégrité ?

    Je n'ai pas trouvé d'infos sur les pages msdn (a moins que je n'ai pu trouver les bon mots ...).

    Merci d'avance pour toutes aides
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Les triggers ne renforcent pas l'intégrité d'une base... C'est plutôt le rôle des contraintes de clés étrangères et contraintes de colonnes (not null etc)

    Pour répondre à ta question (enfin, pas vraiment vu que je n'ai pas la réponse ), le plus simple serait de tester... tu fais un petit trigger qui va lever une erreur, et tu vois le résultat...

  3. #3
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    De ce que je me rappelle (mais je peux me tromper), les triggers sont "hors bande" par rapport à ta connexion...

    J'ai peur que tu n'aies pas de retour coté "client" (ou un gros pétage d'exception générique, a la oracle)

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Bonsoir à vous et merci beaucoup pour vos réponses.

    Citation Envoyé par tomlev
    Les triggers ne renforcent pas l'intégrité d'une base...
    Pourquoi cette affirmation ? Il me semble qu'un des rôles d'un trigger c'est de garantir l'intégrité référentielle (par exemple déclancher une suppression en cascade lors de la suppréssion d'un tuple avec des références étrangères ...).

    En cherchant dans la msdn j'ai vu l'utilisation aussi du terme intégrité pour les trigger :

    Citation Envoyé par msdn
    Les déclencheurs DML s'utilisent souvent pour imposer des règles de gestion et l'intégrité des données.
    http://msdn.microsoft.com/fr-fr/library/ms189799.aspx

    Citation Envoyé par pvialatte
    J'ai peur que tu n'aies pas de retour coté "client" (ou un gros pétage d'exception générique, a la oracle)
    C'est de ça que j'ai peur ...
    Je vais faire un essai demain ;-)

    merci encore
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par rad_hass Voir le message
    (par exemple déclancher une suppression en cascade lors de la suppréssion d'un tuple avec des références étrangères ...).
    En général tu peux gérer ça avec les contraintes de clés étrangères... mais peut-être pas sur tous les SGBD

    Ce qui n'enlève rien à l'intérêt des triggers, soit dit en passant... c'est juste qu'en général je ne m'en sers pas pour ça.

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Par défaut
    Ca dépend, si dans tes triggers tu as des raise errors, dans ce cas, tu les récupéres en SQLException.

    Si tu ne géres pas ça; à moins que l'erreur provoque une erreur d'intégrité dans les relations / index etc; tu ne verras rien.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par tomlev Voir le message
    En général tu peux gérer ça avec les contraintes de clés étrangères... mais peut-être pas sur tous les SGBD

    Ce qui n'enlève rien à l'intérêt des triggers, soit dit en passant... c'est juste qu'en général je ne m'en sers pas pour ça.
    Oui ceci est un cas simple on va dire, mais imaginant que tu dois faire un traitement plus complexe, par exemple ne pas supprimer une valeur qui empêcherai un calcul (par exemple une TVA, ou Taxe) ou vérifier l'héritage avant création vérifier qu'un véhicule ne devient pas bateau et avion à cause de la nouvelle insertion (d'ailleurs l'article de SqlPro à ce sujet est très intéressent ...).

    Pour ce qui est de mon problème j'ai fait le test, on peut générer un niveau de gravité et un message formaté à partir du trigger, mais à priori on a toujours une sqlException à la sortie, donc difficile à exploiter

    Merci en tout cas pour votre aide
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

Discussions similaires

  1. [Débutant] [VB.NET] wpf trigger pour radio bouton et checkbox
    Par HelloWorldsss dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/05/2012, 22h53
  2. [Débutant] [VB.NET] DropDownList_SelectedIndexChanged ne trigger pas.
    Par jeromestj dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/06/2011, 16h44
  3. Récupérer erreur d'un trigger sous vb.net
    Par Skydoo dans le forum VB.NET
    Réponses: 1
    Dernier message: 31/03/2010, 17h10
  4. Trigger qui execute du code VB.net
    Par NicoNGRI dans le forum Développement
    Réponses: 9
    Dernier message: 08/10/2007, 16h52
  5. Réponses: 1
    Dernier message: 13/03/2007, 16h23

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