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

Salesforce.com Discussion :

[Apex] plus que 10 000 opéartions DML en même temps


Sujet :

Salesforce.com

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    SalesForce
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : SalesForce

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Apex] plus que 10 000 opéartions DML en même temps
    Bonjour à tout le monde,

    J'aimerais faire une suppression de plusieurs données sur salesforce.

    J'ai créé une requête qui retourne presque 15000 enregistrements à supprimer.

    Lorsque je fais database.delete(historiqueMembresDeCampagne); Dans mon cas: historiqueMembresDeCampagne est une liste des membres de campagnes qui peut avoir plus que 10 000 enregistrements

    J'ai directement un message d'erreur :

    Apex trigger PRO_Campagne caused an unexpected exception, contact your administrator: PRO_Campagne: System.LimitException: Too many DML rows: 10001

    J'espère qu'il y a quelqu'un qui peut m'aider ou me donner une idée.

    Merci d'avance . Bonne fin de journée à tous.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 239
    Points : 424
    Points
    424
    Par défaut
    Bonjour,

    Je pense qu'il faut utiliser un batch qui va s'executer par morceau et ainsi eviter le dépassement de la limite
    tu peux regarder ce tutoriel:
    https://developer.salesforce.com/for...00000008nQJIAY

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    SalesForce
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : SalesForce

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    J'ai cru qu'il y a quand même une solution sans utiliser le batch.

    Je vais essayer encore sinon je vais utiliser le batch et je t'informe du résultat.

    Si quelqu'un connaît une solution sans utiliser le batch , merci de m'informer.

    Bonne journée à tout le monde

  4. #4
    Membre régulier Avatar de Actarus78
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 87
    Points : 118
    Points
    118
    Par défaut
    Bonjour,

    Il semblerait que ton problème proviens du trigger qui est exécuté et qui provoque des dépassements dans les quotas d'appels DML.
    La solution de découpe de v.charlet est une solution

    Une autre solution serait de créer un boolean dans le trigger pour spécifier s'il doit exécuter son code ou non en fonction par exemple d'un champ dans un profil utilisateur type "by pass trigger"
    Tu peux aussi de façon très barbare désactiver le trigger le temps de la suppression mais je te le déconseille si tu es sur un serveur de production.

    Une piste : http://bobbuzzard.blogspot.fr/2011/1...from-apex.html

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 69
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Comment as-tu lancer ta suppression ? Via du code anonyme ?

    Une autre solution serait d'utiliser l'outil dataloader pour gérer ta suppression si tu veux éviter d'avoir à réaliser des développements.

    Dataloader se charge de traiter les delete, create, update, upsert ... en masse en gérant le traitement par paquets. D'ailleur, tu peux spécifier la taille des paquets.

    Procédure à suivre :
    Via le dataloader tu fais un export avec ta requête de suppression pour récupérer les id à supprimer et ensuite avec ce csv du gére la suppression.

    Ps : il y a d'autres outils qui te permettent de réaliser cette suppression.

    Bonne journée.

    Cordialement.

Discussions similaires

  1. Qu'est-ce-que perl à de plus que les autres ?
    Par Celelibi dans le forum Langage
    Réponses: 7
    Dernier message: 24/08/2005, 01h00
  2. height: encore plus que 100%
    Par Anduriel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/06/2005, 13h56

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