DML ã䜿çšããŠã¬ã³ãŒããæäœãã
åŠç¿ã®ç®ç
ãã®åå ãå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
- DML ã䜿çšããŠã¬ã³ãŒããæ¿å
¥ãæŽæ°ãåé€ããã
- DML ã¹ããŒãã¡ã³ããäžæ¬å®è¡ããã
- upsert ã䜿çšããŠã¬ã³ãŒããæ¿å
¥ãŸãã¯æŽæ°ããã
- DML äŸå€ããã£ããããã
- ããŒã¿ããŒã¹ã¡ãœããã䜿çšããŠéšåçãªå®äºãªãã·ã§ã³ãæå®ããæ°èŠã¬ã³ãŒããæ¿å
¥ããŠçµæãåŠçããã
- DML ã¹ããŒãã¡ã³ãã䜿çšããå ŽåãšããŒã¿ããŒã¹ã¡ãœããã䜿çšããå Žåãçè§£ããã
- é¢é£ã¬ã³ãŒãã«å¯Ÿã㊠DML æäœãå®è¡ããã
DML ã䜿çšããŠã¬ã³ãŒããæäœãã
Salesforce ã§ã®ã¬ã³ãŒãã®äœæã倿Žã«ã¯ãããŒã¿æäœèšèª (DML) ã䜿çšããŸããDML ã§ã¯ãã·ã³ãã«ãªã¹ããŒãã¡ã³ãã䜿çšããŠã¬ã³ãŒãã®æ¿å ¥ãæŽæ°ãããŒãžãåé€ã埩å ãè¡ãããšã§ãç°¡åã«ã¬ã³ãŒãã管çã§ããŸãã
Apex ã¯ããŒã¿æåã®èšèªã§ãããSalesforce Platform ã«ä¿åããããããSalesforce ã®ããŒã¿ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸããããŒã¿ãœãŒã¹ã«æ¥ç¶ããããã«è¿œå ã®èšå®ãå¿ èŠãªã»ãã®ããã°ã©ãã³ã°èšèªãšã¯ç°ãªããApex DML ã§ã¯ã¬ã³ãŒãã®ç®¡çã容æã§ããDML ã¹ããŒãã¡ã³ããã³ãŒã«ããããšã§ãSalesforce ã¬ã³ãŒãã«å¯Ÿããæäœããã°ããå®è¡ã§ããŸããæ¬¡ã®äŸã§ã¯ãååŒå Acme ã Salesforce ã«è¿œå ããŸããæåã«ååŒå sObject ãäœæãããåŒæ°ãšã㊠insert ã¹ããŒãã¡ã³ãã«æž¡ãããŸããããã«ãããã¬ã³ãŒãã Salesforce å ã«ä¿æãããŸãã
// Create the account sObject Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100); // Insert the account by using DML insert acct;
DML ã¹ããŒãã¡ã³ã
次㮠DML ã¹ããŒãã¡ã³ãã䜿çšã§ããŸãã
insertupdateupsertdeleteundelete-
merge(ãªãŒããååŒå 責任è ãã±ãŒã¹ãååŒå ã®å sObject ã§ã®ã¿äœ¿çšå¯èœ)
å DML ã¹ããŒãã¡ã³ã㯠1 ã€ã® sObject ãŸã㯠sObject ã®ãªã¹ã (ãŸãã¯é å) ãåãå ¥ããŸããã¬ã³ãŒããåŠçããå Žåã¯ãsObject ã®ãªã¹ããæäœããæ¹ãå¹ççã§ãã
insertãupdateãdelete ã¯ãäžè¬çãªããŒã¿ããŒã¹æäœã¹ããŒãã¡ã³ãã§ããupsertãundeleteãmerge ã¯ãéåžžã«äŸ¿å©ãª Salesforce åºæã®ã¹ããŒãã¡ã³ãã§ãã
upsert DML ã¹ããŒãã¡ã³ãã§ã¯ãæ¢åã®ãªããžã§ã¯ããååšãããã©ãããå€å¥ããããã«ãæå®ãããé
ç®ã䜿çšããããé
ç®ãæå®ãããŠããªãå Žå㯠ID é
ç®ã䜿çšããŠã1 ã€ã®ã¹ããŒãã¡ã³ãå
ã§æ°èŠã¬ã³ãŒãã®äœæã sObject ã¬ã³ãŒãã®æŽæ°ãè¡ããŸãã
undelete DML ã¹ããŒãã¡ã³ãã¯ããã¿ç®±ã«æ®ã£ãŠããå逿žã¿ã¬ã³ãŒãã埩å
ããŸãã
merge DML ã¹ããŒãã¡ã³ãã¯ãåã sObject ããŒã¿åã®æå€§ 3 ã€ã®ã¬ã³ãŒãã 1 ã€ã®ã¬ã³ãŒãã«ããŒãžããã»ãã®ã¬ã³ãŒããåé€ããŠãããé¢é£ã¬ã³ãŒããåãã¢ã¬ã³ãåããŸããããŒãžã§ããã®ã¯ããªãŒããååŒå
責任è
ãã±ãŒã¹ãååŒå
ã®ã¿ã§ãã
æ°èŠã¬ã³ãŒããžã® ID é ç®ã®èªåå²ãåœãŠ
ã¬ã³ãŒãã®æ¿å ¥æãã·ã¹ãã ã«ãã£ãŠåã¬ã³ãŒãã« ID ãå²ãåœãŠãããŸããããŒã¿ããŒã¹ã« ID å€ãä¿æãããã ãã§ãªããDML ã³ãŒã«ã®åŒæ°ãšããŠäœ¿çšãã sObject 倿°ã«ã ID å€ãèªåå ¥åãããŸãã
次ã®äŸã¯ãæ¿å ¥ãããååŒå ã«å¯Ÿå¿ãã sObject ã® ID ãååŸããæ¹æ³ã瀺ããŸãã
// Create the account sObject
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
// Insert the account by using DML
insert acct;
// Get the new ID on the inserted sObject argument
ID acctID = acct.Id;
// Display this ID in the debug log
System.debug('ID = ' + acctID);
// Debug log result (the ID will be different in your case)
// DEBUG|ID = 001D000000JmKkeIAé«åºŠãªæäœ
ãã®äŸã§ã¯ãDML ã³ãŒã«åŸãsObject 倿°ã« ID ãå«ãŸããŠãããããã·ã¹ãã ã ID ãç §åããŠãã® sObject 倿°ã察å¿ããã¬ã³ãŒãã«äžèŽãããããããã«ãªããsObject 倿°ãåå©çšããŠããã«æŽæ°ãªã©ã® DML æäœãå®è¡ã§ããŸãã
ããŒã¿ããŒã¹ããã¬ã³ãŒããååŸããŠãã®é ç® (ID é ç®ãªã©) ãååŸã§ããŸããããã®æäœã¯ DML ã§ã¯å®è¡ã§ããŸãããSOQL ã䜿çšããŠã¯ãšãªãäœæããå¿ èŠããããŸããSOQL ã«ã€ããŠã¯ãå¥ã®åå ã§èª¬æããŸãã
äžæ¬ DML
DML æäœã¯ãåäžã® sObject ã§è¡ãããšããsObject ã®ãªã¹ãã§äžæ¬ã§è¡ãããšãã§ããŸããäžæ¬ DML æäœã§ã¯ã¬ããå¶é (Apex ãã©ã³ã¶ã¯ã·ã§ã³ããšã®ã¹ããŒãã¡ã³ãæ°ã 150 ä»¶ã«å¶éãã DML å¶éãªã©) ã«éããããšã鲿¢ã§ããããããã®æäœãå®è¡ããããšããå§ãããŸãããã®å¶éã¯ãSalesforce Platform ã®å ±æãªãœãŒã¹ã«å ¬æ£ã«ã¢ã¯ã»ã¹ã§ããããã«ããããã«èšå®ãããŠããŸããsObject ã®ãªã¹ãã§ DML æäœãå®è¡ãããšãsObject ããšã« 1 ã€ã®ã¹ããŒãã¡ã³ããšã¿ãªãããã®ã§ã¯ãªãã1 ã€ã® DML ã¹ããŒãã¡ã³ããšã¿ãªãããŸãã
次ã®äŸã§ã¯ã1 åã®ã³ãŒã«ã§ååŒå 責任è ã®ãªã¹ããæ¿å ¥ããããšã«ãããååŒå 責任è ãäžæ¬æ¿å ¥ããŸããæ¬¡ã«ããã®ååŒå 責任è ãäžæ¬æŽæ°ããŸãã
- éçºè
ã³ã³ãœãŒã«ã§å¿å Apex ã䜿çšããŠæ¬¡ã®ã¹ãããããå®è¡ããŸãã
// Create a list of contacts List<Contact> conList = new List<Contact> { new Contact(FirstName='Joe',LastName='Smith',Department='Finance'), new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'), new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'), new Contact(FirstName='Kim',LastName='Shain',Department='Education')}; // Bulk insert all contacts with one DML call insert conList; // List to hold the new contacts to update List<Contact> listToUpdate = new List<Contact>(); // Iterate through the list and add a title only // if the department is Finance for(Contact con : conList) { if (con.Department == 'Finance') { con.Title = 'Financial analyst'; // Add updated contact sObject to the list. listToUpdate.add(con); } } // Bulk update all contacts with one DML call update listToUpdate; - çµç¹ã§æè¿äœæãããååŒå
責任è
ã調ã¹ãŸãã
Finance (財å) éšéã«æå±ãã 2 人ã®ååŒå 責任è ã®åœ¹è·ã«ã¯ Financial analyst (財åã¢ããªã¹ã) ãšå ¥åãããŠããŸãã
ã¬ã³ãŒããæŽæ°/æ¿å ¥ãã
æ°èŠã¬ã³ãŒããšæ¢åã¬ã³ãŒããæ··åšãããªã¹ãã®å Žåãupsert ã¹ããŒãã¡ã³ãã䜿çšããŠããªã¹ãã®å
šã¬ã³ãŒãã察象ãšããæ¿å
¥ãšæŽæ°ãåŠçã§ããŸããupsert ã«ãããéè€ã¬ã³ãŒããäœæãããã®ãåé¿ã§ããæåã«ååšããŠããã¬ã³ãŒããå€å¥ããå¿
èŠããªããªããããæéãç¯çŽã§ããŸãã
upsert ã¹ããŒãã¡ã³ãã¯ã1 ã€ã®é
ç®ã®å€ãæ¯èŒã㊠sObject ãšæ¢åã®ã¬ã³ãŒããç
§åããŸãããã®ã¹ããŒãã¡ã³ããã³ãŒã«ãããšãã«é
ç®ãæå®ããªããšãupsert ã¹ããŒãã¡ã³ã㯠sObject ã® ID ã䜿çšã㊠sObject ãš Salesforce ã®æ¢åã®ã¬ã³ãŒããç
§åããŸãããŸãã¯ãç
§åã«äœ¿çšããé
ç®ãæå®ã§ããŸããã«ã¹ã¿ã ãªããžã§ã¯ãã®å Žåãå€éš ID ãšããŒã¯ãããã«ã¹ã¿ã é
ç®ãæå®ããŸããæšæºãªããžã§ã¯ãã®å ŽåãidLookup ããããã£ã true ã«èšå®ãããŠããé
ç®ã§ããã°æå®ã§ããŸããããšãã°ãååŒå
責任è
ãŸãã¯ãŠãŒã¶ãŒã®ã¡ãŒã«é
ç®ã® idLookup ããããã£ã¯èšå®ãããŠããŸããé
ç®ã®ããããã£ããã§ãã¯ããã«ã¯ããObject Reference for Salesforce Platform (Salesforce Platform ã®ãªããžã§ã¯ããªãã¡ã¬ã³ã¹)ããåç
§ããŠãã ããã
upsert ã®æ§æ
upsert sObject | sObject[] upsert sObject | sObject[]Â field
çç¥å¯èœãªé
ç®ã¯ãé
ç®ããŒã¯ã³ã§ããããšãã°ãMyExternalID é
ç®ãæå®ããå Žåã®ã¹ããŒãã¡ã³ãã¯æ¬¡ã®ããã«ãªããŸãã
upsert sObjectList Account.Fields.MyExternalId;
upsert ã§ã¯ãæ°èŠã¬ã³ãŒããäœæãããæ¢åã®ã¬ã³ãŒããæŽæ°ããããå€å¥ããããã«ãsObject ã¬ã³ãŒãã®äž»ã㌠(ID)ãidLookup é
ç®ããŸãã¯å€éš ID é
ç®ã䜿çšããŸãã
- ããŒãäžèŽããªãå Žåãæ°èŠãªããžã§ã¯ãã¬ã³ãŒããäœæãããŸãã
- ããŒãäžåºŠã ãäžèŽããããæ¢åã®ãªããžã§ã¯ãã¬ã³ãŒããæŽæ°ãããŸãã
- ããŒãè€æ°åäžèŽããå Žåã¯ããšã©ãŒãçæããããªããžã§ã¯ãã¬ã³ãŒãã¯æ¿å
¥ãæŽæ°ããããŸããã
次ã®äŸã¯ã1 åã®ã³ãŒã«ã§ upsert ãæ¢åã®ååŒå 責任è ã¬ã³ãŒããæŽæ°ããæ°èŠååŒå 責任è ãæ¿å ¥ããæ¹æ³ã瀺ããŸãããã® upsert ã³ãŒã«ã«ãããæ¢åã®ååŒå 責任è Josh ãæŽæ°ãããæ°èŠååŒå 責任è Kathy ãæ¿å ¥ãããŸãã
- éçºè
ã³ã³ãœãŒã«ã® [Execute Anonymous (å¿åå®è¡)] ãŠã£ã³ããŠã§ã次ã®ã¹ãããããå®è¡ããŸãã
// Insert the Josh contact Contact josh = new Contact(FirstName='Josh',LastName='Kaplan',Department='Finance'); insert josh; // Josh's record has been inserted // so the variable josh has now an ID // which will be used to match the records by upsert josh.Description = 'Josh\'s record has been updated by the upsert operation.'; // Create the Kathy contact, but don't persist it in the database Contact kathy = new Contact(FirstName='Kathy',LastName='Brown',Department='Technology'); // List to hold the new contacts to upsert List<Contact> contacts = new List<Contact> { josh, kathy }; // Call upsert upsert contacts; // Result: Josh is updated and Kathy is created. - çµç¹ã®ãã¹ãŠã®ååŒå
責任è
ã調ã¹ãŸãã
çµç¹ã® Josh Kaplan ã®ã¬ã³ãŒã㯠1 ä»¶ã®ã¿ã«ãªããŸã (2 ä»¶ã§ã¯ãããŸãã)ãããã¯ãupsert æäœã§æ¢åã®ã¬ã³ãŒããèŠã€ãã£ãããããã®ã¬ã³ãŒããæŽæ°ãããæ°èŠååŒå 責任è ã¬ã³ãŒãã¯äœæãããªãã£ãããã§ããKathy Brown ã®ååŒå 責任è ã¬ã³ãŒãã 1 ä»¶ãããŸãã
ãŸãã¯ãã¬ã³ãŒãã®ç
§åã«äœ¿çšããé
ç®ãæå®ã§ããŸããããšãã°ããã®äŸã§ã¯ idLookup ããããã£ãèšå®ãããŠãããããååŒå
責任è
ã®ã¡ãŒã«é
ç®ã䜿çšãããŠããŸãããã®äŸã§ã¯ãååŒå
責任è
Jane Smith ãæ¿å
¥ããã2 ä»¶ç®ã®ååŒå
責任è
sObject ãäœæãããŠãåãã¡ãŒã«ã¢ãã¬ã¹ãå
¥åãããŸãããã®åŸã§ãupsert ãã³ãŒã«ãããç
§åã«ã¡ãŒã«é
ç®ã䜿çšããŠååŒå
責任è
ãæŽæ°ãããŸãã
- éçºè
ã³ã³ãœãŒã«ã® [Execute Anonymous (å¿åå®è¡)] ãŠã£ã³ããŠã§ã次ã®ã¹ãããããå®è¡ããŸãã
Contact jane = new Contact(FirstName='Jane', LastName='Smith', Email='jane.smith@example.com', Description='Contact of the day'); insert jane; // 1. Upsert using an idLookup field // Create a second sObject variable. // This variable doesnât have any ID set. Contact jane2 = new Contact(FirstName='Jane', LastName='Smith', Email='jane.smith@example.com', Description='Prefers to be contacted by email.'); // Upsert the contact by using the idLookup field for matching. upsert jane2 Contact.fields.Email; // Verify that the contact has been updated System.assertEquals('Prefers to be contacted by email.', [SELECT Description FROM Contact WHERE Id=:jane.Id].Description); - çµç¹ã®ãã¹ãŠã®ååŒå
責任è
ã調ã¹ãŸãã
çµç¹ã®ååŒå 責任è Jane Smith 㯠1 ä»¶ã®ã¿ã§ã説æãæŽæ°ãããŠããŸãã
ã¬ã³ãŒããåé€ãã
delete ã¹ããŒãã¡ã³ãã䜿çšããŠä¿æãããŠããã¬ã³ãŒããåé€ã§ããŸããåé€ãããã¬ã³ãŒã㯠Salesforce Platform ããå³åº§ã«åé€ãããããã§ã¯ãããŸããããŸãããã¿ç®±ã« 15 æ¥éä¿ç®¡ããããã®éã¯åŸ©å
ããããšãã§ããŸãã15 æ¥ãçµéãããšãã¬ã³ãŒãã¯å®å
šåé€ã®å¯Ÿè±¡ãšãªããŸãããã®åŸãã¬ã³ãŒããå®å
šåé€ãããã¿ã€ãã³ã°ã¯ç¶æ³ã«ãã£ãŠç°ãªããŸãã
次ã®äŸã¯ãå§ã Smith ã®ååŒå 責任è ããã¹ãŠåé€ããæ¹æ³ã瀺ããŸããäžæ¬ DML ã®ãµã³ãã«ãå®è¡æžã¿ã®å Žåãçµç¹ã«ã¯ãã§ã«å§ã Smith ã®ååŒå 責任è ã 2 ä»¶ãããŸããéçºè ã³ã³ãœãŒã«ã§ [Anonymous Apex (å¿å Apex)] ã䜿çšããŠæ¬¡ã®ã¹ãããããå®è¡ããå§ã Smith ã®ååŒå 責任è ããªããªã£ãããšã確èªããŸãã
Contact[] contactsDel = [SELECT Id FROM Contact WHERE LastName='Smith']; delete contactsDel;
DML ã¹ããŒãã¡ã³ãã®äŸå€
DML æäœã倱æããå ŽåãDmlException åã®äŸå€ãè¿ãããŸããã³ãŒãã§äŸå€ããã£ããããŠããšã©ãŒç¶æ³ãåŠçã§ããŸãã
次ã®äŸã§ã¯ãå¿
é ã®ååé
ç®ãªãã§ååŒå
ã®æ¿å
¥ã詊ã¿ããããDmlException ãçæãããŸããäŸå€ã¯ãcatch ãããã¯ã§ãã£ãããããŸãã
try {
// This causes an exception because
// the required Name field is not provided.
Account acct = new Account();
// Insert the account
insert acct;
} catch (DmlException e) {
System.debug('A DML exception has occurred: ' +
e.getMessage());
}ããŒã¿ããŒã¹ã¡ãœãã
Apex ã«ã¯ãçµã¿èŸŒã¿ã® Database ã¯ã©ã¹ãå«ãŸããŠãããDML æäœãå®è¡ãã察å¿ãã DML ã¹ããŒãã¡ã³ããšåãåäœãããã¡ãœãããæäŸããŸãã
次ã®ããŒã¿ããŒã¹ã¡ãœããã¯éçã§ãã¯ã©ã¹åã§ã³ãŒã«ãããŸãã
Database.insert()Database.update()Database.upsert()Database.delete()Database.undelete()-
Database.merge()(ãªãŒããååŒå 責任è ãã±ãŒã¹ãååŒå ã®å sObject ã§ã®ã¿äœ¿çšå¯èœ)
DML ã¹ããŒãã¡ã³ããšã¯ç°ãªããããŒã¿ããŒã¹ã¡ãœããã«ã¯çç¥å¯èœãª allOrNone ãã©ã¡ãŒã¿ãŒããããæäœãéšåçã«å®äºãããå¿
èŠããããã©ãããæå®ã§ããŸãããã®ãã©ã¡ãŒã¿ãŒã false ã«èšå®ãããšãäžéšã®ã¬ã³ãŒãã§ãšã©ãŒãçºçããå Žåãæåããã¬ã³ãŒãã¯ã³ãããããã倱æããã¬ã³ãŒãã«ã€ããŠã¯ãšã©ãŒãè¿ãããŸãããŸããéšåçãªå®äºãªãã·ã§ã³ã§ã¯ãäŸå€ãçºçãããŸããã
次ã®äŸã¯ãallOrNone ã false ã«èšå®ã㊠insert ã¡ãœãããã³ãŒã«ããæ¹æ³ã瀺ããŸãã
Database.insert(recordList, false);
ããŒã¿ããŒã¹ã¡ãœããã¯ãåã¬ã³ãŒãã®æåãŸãã¯å€±ææ
å ±ãå«ãŸããçµæãªããžã§ã¯ããè¿ããŸããããšãã°ãæ¿å
¥æäœãšæŽæ°æäœã¯ãããã Database.SaveResult ãªããžã§ã¯ãã®é
åãè¿ããŸãã
Database.SaveResult[] results = Database.insert(recordList, false);
ããã©ã«ãã§ã¯ãallOrNone ãã©ã¡ãŒã¿ãŒã¯ true ã«èšå®ãããŠãããããããŒã¿ããŒã¹ã¡ãœããã¯å¯Ÿå¿ãã DML ã¹ããŒãã¡ã³ããšåæ§ã«åäœãããšã©ãŒã®å Žåã¯äŸå€ãçºçãããŸãã
次㮠2 ã€ã®ã¹ããŒãã¡ã³ã㯠insert recordList; ã¹ããŒãã¡ã³ããšåçã§ãã
Database.insert(recordList);
ãš
Database.insert(recordList, true);
é«åºŠãªæäœ
ãããã®ã¡ãœããã«å ããDatabase ã¯ã©ã¹ã«ã¯ãDML ã¹ããŒãã¡ã³ããšããŠæäŸãããªãã¡ãœãããå«ãŸããŸããããšãã°ããã©ã³ã¶ã¯ã·ã§ã³ã®ã³ã³ãããŒã«ãšããŒã«ããã¯ãè¡ãã¡ãœããããã¿ç®±ã空ã«ããããã«äœ¿çšãããã¡ãœãããSOQL ã¯ãšãªã«é¢é£ããã¡ãœãããªã©ã§ããSOQL ã«ã€ããŠã¯ãå¥ã®åå ã§èª¬æããŸãã
äŸ: éšåçãªå®äºãæå®ããŠã¬ã³ãŒããæ¿å ¥ãã
ããŒã¿ããŒã¹ã¡ãœããã䜿çšããæ¬¡ã®äŸãèŠãŠã¿ãŸãããããã®äŸã¯ãäžæ¬ DML ã®äŸã«åºã¥ããŠããŸãããDML ã¹ããŒãã¡ã³ããããŒã¿ããŒã¹ã¡ãœããã«çœ®ãæããããŠããŸããDatabase.insert() ã¡ãœããã¯ãéšåçãªå®äºãªãã·ã§ã³ãæå®ããŠã³ãŒã«ãããŸãããªã¹ãã® 1 ã€ã®ååŒå
責任è
ã«ã¯æå³çã«äžåã®é
ç®ããããŸãããååŒå
責任è
ã¯å¿
é ã® LastName é
ç®ããªããšä¿åã§ããªããããããã«ãããšã©ãŒãçºçããŸãã3 ã€ã®ååŒå
責任è
ã¯ã³ããããããé
ç®ã®ãªãååŒå
責任è
ã§ã¯ãšã©ãŒãçºçããŸãããã®äŸã®æåŸã®éšåã§ã¯ãè¿ãããçµæãå埩åŠçããŠããããã°ãã°ã«ãããã°ã¡ãã»ãŒãžãæžãåºããŸãã
- éçºè
ã³ã³ãœãŒã«ã® [Execute Anonymous (å¿åå®è¡)] ãŠã£ã³ããŠã§ã次ã®äŸãå®è¡ããŸãã
// Create a list of contacts List<Contact> conList = new List<Contact> { new Contact(FirstName='Joe',LastName='Smith',Department='Finance'), new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'), new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'), new Contact()}; // Bulk insert all contacts with one DML call Database.SaveResult[] srList = Database.insert(conList, false); // Iterate through each returned result for (Database.SaveResult sr : srList) { if (sr.isSuccess()) { // Operation was successful, so get the ID of the record that was processed System.debug('Successfully inserted contact. Contact ID: ' + sr.getId()); } else { // Operation failed, so get all errors for(Database.Error err : sr.getErrors()) { System.debug('The following error has occurred.'); System.debug(err.getStatusCode() + ': ' + err.getMessage()); System.debug('Contact fields that affected this error: ' + err.getFields()); } } } - ãããã°ã¡ãã»ãŒãžã確èªããŸã (æ€çŽ¢æ¡ä»¶ã« DEBUG ããŒã¯ãŒãã䜿çš)ã
1 ã€ã®ãšã©ãŒãã¬ããŒãããã3 ã€ã®ååŒå 責任è ã¯æ¿å ¥ãããŠããŸãã
DML ã¹ããŒãã¡ã³ããšããŒã¿ããŒã¹ã¡ãœããã®äœ¿ãåã
- DML äžæ¬åŠçäžã«çºçãããšã©ãŒããã³ã³ãããŒã«ãããŒããã®å Žã§äžæãã Apex äŸå€ãšããŠåŠçããå ŽåãDML ã¹ããŒãã¡ã³ãã䜿çšããŸããããã§ã¯
try...catchãããã¯ã䜿çšããŸãããã®åäœã¯ãã»ãšãã©ã®ããŒã¿ããŒã¹æç¶ãåèšèªã§ã®äŸå€ã®åŠçæ¹æ³ã«äŒŒãŠããŸãã
- DML äžæ¬æäœã®éšåçãªå®äºãå¯èœã«ããå Žåã¯ãDatabase ã¯ã©ã¹ã¡ãœããã䜿çšããŸããã¬ã³ãŒãã倱æããå Žåã§ããDML æäœã®æ®ãã¯çµäºã§ããŸããã¢ããªã±ãŒã·ã§ã³ã¯æåŠãããã¬ã³ãŒãã確èªã§ããå¯èœã§ããã°æäœãå詊è¡ããŸãããã®åœ¢åŒã䜿çšãããšãDML äŸå€ãšã©ãŒãçºçããããšããªãã³ãŒããæžãããšãã§ããŸãããšã©ãŒãçºçããªã代ããã«ãäœæããã³ãŒãã§ã¯ãæåãŸãã¯å€±æã倿ããããã®é©åãªçµæé
åã䜿çšã§ããŸããDatabase ã¯ã©ã¹ã¡ãœããã«ã¯ãDML ã¹ããŒãã¡ã³ãã«é¡äŒŒãããçºçããäŸå€ããµããŒãããæ§æãå«ãŸããŸãã
é¢é£ã¬ã³ãŒããæäœãã
ãªã¬ãŒã·ã§ã³ã«ãã£ãŠäºãã«é¢é£ããã¬ã³ãŒããäœæãã管çããŸãã
é¢é£ã¬ã³ãŒããæ¿å ¥ãã
2 ã€ã®ãªããžã§ã¯ãéã®ãªã¬ãŒã·ã§ã³ (åç
§é¢ä¿ãäž»åŸé¢ä¿ãªã©) ããã§ã«å®çŸ©ãããŠããå Žåãæ¢åã®ã¬ã³ãŒãã«é¢é£ããã¬ã³ãŒããæ¿å
¥ã§ããŸããã¬ã³ãŒãã¯ãå€éšã㌠ID ã䜿çšããŠé¢é£ã¬ã³ãŒãã«é¢é£ä»ããããŸããããšãã°ãæ°èŠååŒå
責任è
ãæ¿å
¥ããå ŽåãAccountId é
ç®ã®å€ãèšå®ããããšã§ãååŒå
責任è
ã®é¢é£ååŒå
ã¬ã³ãŒããæå®ã§ããŸãã
ãã®äŸã§ã¯ãååŒå
責任è
ã® AccountId é
ç®ãèšå®ããŠãååŒå
責任è
ãååŒå
(é¢é£ã¬ã³ãŒã) ã«è¿œå ããæ¹æ³ã瀺ããŸããååŒå
責任è
ãšååŒå
ã¯åç
§é¢ä¿ã§ãªã³ã¯ãããŠããŸãã
- éçºè
ã³ã³ãœãŒã«ã® [Anonymous Apex (å¿å Apex)] ãŠã£ã³ããŠã§æ¬¡ã®ã¹ãããããå®è¡ããŸãã
Account acct = new Account(Name='SFDC Account'); insert acct; // Once the account is inserted, the sObject will be // populated with an ID. // Get this ID. ID acctID = acct.ID; // Add a contact to this account. Contact mario = new Contact( FirstName='Mario', LastName='Ruiz', Phone='415.555.1212', AccountId=acctID); insert mario; - çµç¹ã®ååŒå
ã調ã¹ãŸãã
æ°èŠååŒå (SFDC Account) ãäœæãããŠãããååŒå ã® [Contacts (ååŒå 責任è )] é¢é£ãªã¹ãã«ååŒå 責任è Mario Ruiz ãå«ãŸããŠããŸãã
é¢é£ã¬ã³ãŒããæŽæ°ãã
é¢é£ã¬ã³ãŒãã®é
ç®ã¯ãåã DML æäœã®ã³ãŒã«ã§ã¯æŽæ°ã§ããªããããå¥ã® DML ã³ãŒã«ãå¿
èŠã«ãªããŸããããšãã°ãæ°èŠååŒå
責任è
ãæ¿å
¥ããå ŽåãAccountId é
ç®ã®å€ãèšå®ããããšã§ãååŒå
責任è
ã®é¢é£ååŒå
ã¬ã³ãŒããæå®ã§ããŸãããã ããå¥ã® DML ã³ãŒã«ã䜿çšããŠååŒå
èªäœãæŽæ°ããªãå ŽåãååŒå
ã®ååã倿Žããããšã¯ã§ããŸãããåæ§ã«ãååŒå
責任è
ãæŽæ°ãããšãã«ãååŒå
責任è
ã®é¢é£ååŒå
ãæŽæ°ããå Žåã¯ã2 ã€ã® DML ã³ãŒã«ãäœæããå¿
èŠããããŸããæ¬¡ã®äŸã§ã¯ã2 ã€ã® update ã¹ããŒãã¡ã³ãã䜿çšããŠååŒå
責任è
ãšãã®é¢é£ååŒå
ãæŽæ°ããŠããŸãã
// Query for the contact, which has been associated with an account.
Contact queriedContact = [SELECT Account.Name
FROM Contact
WHERE FirstName = 'Mario' AND LastName='Ruiz'
LIMIT 1];
// Update the contact's phone number
queriedContact.Phone = '(415)555-1213';
// Update the related account industry
queriedContact.Account.Industry = 'Technology';
// Make two separate calls
// 1. This call is to update the contact's phone.
update queriedContact;
// 2. This call is to update the related account's Industry field.
update queriedContact.Account;
é¢é£ã¬ã³ãŒããåé€ãã
delete æäœã§ã¯ãã«ã¹ã±ãŒãåé€ããµããŒããããŠããŸãã芪ãªããžã§ã¯ããåé€ãããšãååã¬ã³ãŒããåé€å¯èœãªå Žåã¯èªåçã«åé€ãããŸãã
ããšãã°ãåã«äœæããååŒå (SFDC Account) ãåé€ãããšããã®é¢é£ååŒå 責任è ãåé€ãããŸãã
- éçºè
ã³ã³ãœãŒã«ã® [Anonymous Apex (å¿å Apex)] ãŠã£ã³ããŠã§æ¬¡ã®ã¹ãããããå®è¡ããŸãã
Account[] queriedAccounts = [SELECT Id FROM Account WHERE Name='SFDC Account']; delete queriedAccounts;
- çµç¹ã®ååŒå
ãšååŒå
責任è
ã調ã¹ãŸãã
ååŒå ãšãã®é¢é£ååŒå 責任è ã®äž¡æ¹ãåé€ãããŠããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã«ã€ããŠ
DML æäœã¯ãã©ã³ã¶ã¯ã·ã§ã³å ã§å®è¡ãããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«ã¯ããã¹ãŠã® DML æäœãæ£åžžã«å®äºããããšãæ±ããããŸããããããã®æäœã§ãšã©ãŒãçºçããå Žåã¯ãã©ã³ã¶ã¯ã·ã§ã³å šäœãããŒã«ããã¯ãããŸãããã®å ŽåãããŒã¿ã¯äžåããŒã¿ããŒã¹ã«ã³ããããããŸããããã©ã³ã¶ã¯ã·ã§ã³ã®å¢çã¯ãããªã¬ãŒãã¯ã©ã¹ã¡ãœãããå¿åã®ã³ãŒããããã¯ãApex ããŒãžãã«ã¹ã¿ã Web ãµãŒãã¹ã¡ãœããã®ããããã«ããããšãã§ããŸããããšãã°ãããªã¬ãŒãŸãã¯ã¯ã©ã¹ã 2 ã€ã®ååŒå ãäœæãã1 ã€ã®ååŒå 責任è ãæŽæ°ããå Žåãå ¥åèŠåãšã©ãŒã§ãã®ååŒå 責任è ã®æŽæ°ã倱æãããšããã©ã³ã¶ã¯ã·ã§ã³å šäœãããŒã«ããã¯ãããŠãSalesforce ã«ã¯ãããã®ååŒå ãä¿æãããŸããã
ãªãœãŒã¹
- Apex éçºè ã¬ã€ã: Apex ã§ã®ããŒã¿ã®æäœ
- Apex éçºè ã¬ã€ã: Apex DML ãªãã¬ãŒã·ã§ã³
- Apex ãªãã¡ã¬ã³ã¹ã¬ã€ã: Database ã¯ã©ã¹
- Apex éçºè ã¬ã€ã: Exception ã®ã¹ããŒãã¡ã³ã
- Apex éçºè ã¬ã€ã: sObjects That Donât Support DML Operations (DML æäœããµããŒãããŠããªã sObject)
