konto usunięte

Temat: prosty trigger

Cześć,
Próbuję napisać trigger na potrzeby zmian w salesforce.
Żeby maksymalnie uprościć problem, zastosuję proste symbole.

Mam dwie tabele A i B.
Tabela A zawiera zmienne C i D.
Tabela B zawiera zmienne E i F.

Gdzie D i E to te same zmienne wiążące obie tabele.

Trigger zakładam na tabeli A before Insert.

Dla każdego nowego wpisu w A, trigger powinien pobrać zmienną F z tabeli B (przy pomocy zmiennej D/E).
Jeśli F = "dany_string" to F zmieniamy na C

Jakoś nie mogę ogarnąć szybko języka pisania triggerów w SalesForce.
Ktoś pomoże?
Paweł Marszałek

Paweł Marszałek programista
Salesforce.com

Temat: prosty trigger

Czy wartości D są unikalne w przestrzeni tabeli A?
Czy wartości E są unikalne w przestrzeni tabeli B?
Jeżeli nie, co w przypadku znalezienia duplikatów?
Co w przypadku, gdy nie znajdziemy odpowiednika A w tabeli B?
Czy jesteś pewien, że chcesz to sprawdzać tylko before insert? (łatwo zapomnieć o akcji undelete)

konto usunięte

Temat: prosty trigger

Już mam napisany trigger. Muszę tylko napisać klasę testującą. Jak tylko przejdą testy, wkleję gotowy trigger do tego wątku.

konto usunięte

Temat: prosty trigger

Jednak to był trigger after insert.
Chodziło tak naprawdę o zmianę właściciela Lead'a (kolejki), w momencie kiedy ktoś dodat Activity.
W tym przypadku A to Task, B to Lead, C to CreatedById, D to WhoId, E to Id, a F to OwnerId.

A tu gotowy trigger:

trigger nazwa on Task (after insert) {

Map<Id,Id> leadMap = new Map<Id,Id>();

for(Task t :Trigger.new)
{
if(!leadMap.containsKey(t.whoId))
leadMap.put(t.whoId,t.createdById);
}

List<Lead> leadsToUpdate = [Select Id,OwnerId from Lead where Id in:leadMap.keySet() and OwnerId = 'XXXX'];

for(Lead l : leadsToUpdate){
l.OwnerId = leadMap.get(l.Id);
}

update leadsToUpdate;

}

Jako, że wcześniej pisałem triggery wyłącznie pod MySQL, podejście do triggerów w SalesForce jest nieco odmienne.

Następna dyskusja:

Prosty trigger na MySQL




Wyślij zaproszenie do