disparar un disparador en los datos existentes?
Frecuentes
Visto 3,822 equipos
2
Preparar:
A--< B >-- C . En A hay un RFS en B, y luego hay un activador posterior a la actualización que, cuando se ejecuta, completa los campos en B. Uno de los campos de B se acumula en un campo en C.
Pregunta:
El activador funciona, pero necesito ejecutarlo en los registros existentes en la base de datos para actualizar todo. ¿Cómo puedo hacer eso? Ya intenté ejecutar un 'recálculo de masa de fuerza con el RFS en A y C.
3 Respuestas
7
Podrías escribir bastante simple Batch Apex (ver documentos) clase de trabajo para tocar todos los registros que desea recalcular:
global class TouchRecords implements Database.Batchable<sObject>{
private String query;
global TouchRecords(String query) {
this.query = query;
}
global Database.QueryLocator start(Database.BatchableContext BC){
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext BC, List<sObject> scope){
update scope;
}
global void finish(Database.BatchableContext BC){
}
}
Luego, el trabajo se puede ejecutar ejecutando lo siguiente (por ejemplo, mediante la ejecución anónima):
Id batchInstanceId = Database.executeBatch(new TouchRecords('select id from A__c'));
or
Id batchInstanceId = Database.executeBatch(new TouchRecords('select id from Contact'));
para tocar todos los contactos
Esto debería ejecutar el activador en todos los registros que se tocan (admite un máximo de 50 millones de registros). La misma idea que la solución del cargador de datos propuesta, pero se mantuvo dentro de SFDC para facilitar su reutilización
Respondido 11 Jul 12, 09:07
2
Encontré una solución alternativa.
Utilice el cargador de datos: haga una exportación de los Id y la actualización. esto cambiará la última fecha de modificación y hará que se active el activador posterior a la actualización.
Respondido el 12 de junio de 12 a las 14:06
0
Un mejor enfoque es crear un campo ficticio en el objeto y luego realizar una actualización masiva en ese campo. Podría haber más problemas con esto, por lo que le gustaría reducir el tamaño del lote a un número para que no limite el gobernador SOQL si hace cualquier DML.
Respondido 13 ago 12, 22:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas salesforce apex-code or haz tu propia pregunta.