{"id":3651,"date":"2023-11-25T15:24:28","date_gmt":"2023-11-25T07:24:28","guid":{"rendered":"http:\/\/www.ponybai.com\/?p=3651"},"modified":"2023-11-21T16:40:28","modified_gmt":"2023-11-21T08:40:28","slug":"apex%e6%95%b0%e6%8d%ae%e5%a4%84%e7%90%86","status":"publish","type":"post","link":"http:\/\/www.ponybai.com\/?p=3651","title":{"rendered":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e"},"content":{"rendered":"\n<p>\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e\uff0c \u4f8b\u5982\uff08\uff09\uff0c\u7b49\u7b49\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4f7f\u7528 sObjects<\/strong><br>\u5728\u672c\u5f00\u53d1\u4eba\u5458\u6307\u5357\u4e2d\uff0c\u8be5\u672f\u8bed\u662f\u6307\u53ef\u4ee5\u5b58\u50a8\u5728 Lightning \u5e73\u53f0\u6570\u636e\u5e93\u4e2d\u7684\u4efb\u4f55\u5bf9\u8c61\u3002<var>sObject<\/var><\/li>\n\n\n\n<li><strong>\u6570\u636e\u64cd\u4f5c\u8bed\u8a00<\/strong><br>Apex \u4f7f\u60a8\u80fd\u591f\u5728\u6570\u636e\u5e93\u4e2d\u63d2\u5165\u3001\u66f4\u65b0\u3001\u5220\u9664\u6216\u8fd8\u539f\u6570\u636e\u3002DML \u64cd\u4f5c\u5141\u8bb8\u60a8\u4e00\u6b21\u4fee\u6539\u4e00\u6761\u8bb0\u5f55\u6216\u6279\u91cf\u4fee\u6539\u8bb0\u5f55\u3002<\/li>\n\n\n\n<li><strong>SOQL \u548c SOSL<\/strong>\u00a0\u67e5\u8be2<br>\u60a8\u53ef\u4ee5\u5728 Apex \u4e2d\u5373\u65f6\u8bc4\u4f30 Salesforce \u5bf9\u8c61\u67e5\u8be2\u8bed\u8a00 \uff08SOQL\uff09 \u6216 Salesforce \u5bf9\u8c61\u641c\u7d22\u8bed\u8a00 \uff08SOSL\uff09 \u8bed\u53e5\uff0c\u65b9\u6cd5\u662f\u5c06\u8bed\u53e5\u62ec\u5728\u65b9\u62ec\u53f7\u4e2d\u3002<\/li>\n\n\n\n<li><strong>SOQL For<\/strong>\u00a0\u5faa\u73af SOQL \u5faa\u73af\u904d\u5386<br>SOQL \u67e5\u8be2\u8fd4\u56de\u7684\u6240\u6709 sObject \u8bb0\u5f55\u3002<samp>for<\/samp><\/li>\n\n\n\n<li><strong>sObject \u96c6\u5408<\/strong><br>\u53ef\u4ee5\u7ba1\u7406\u5217\u8868\u3001\u96c6\u548c\u6620\u5c04\u4e2d\u7684 sObject\u3002<\/li>\n\n\n\n<li><strong>\u52a8\u6001<\/strong>Apex<\/li>\n\n\n\n<li>Apex\u00a0<strong>\u5b89\u5168\u548c\u5171\u4eab<\/strong><br>\u5f53\u60a8\u4f7f\u7528 Apex \u65f6\uff0c\u4ee3\u7801\u7684\u5b89\u5168\u6027\u81f3\u5173\u91cd\u8981\u3002\u60a8\u9700\u8981\u4e3a Apex \u7c7b\u6dfb\u52a0\u7528\u6237\u6743\u9650\u5e76\u5f3a\u5236\u6267\u884c\u5171\u4eab\u89c4\u5219\u3002\u8bf7\u7ee7\u7eed\u9605\u8bfb\uff0c\u4e86\u89e3 Apex \u6258\u7ba1\u5171\u4eab\u5e76\u83b7\u53d6\u4e00\u4e9b\u5b89\u5168\u63d0\u793a\u3002<\/li>\n\n\n\n<li><strong>\u81ea\u5b9a\u4e49<\/strong>\u8bbe\u7f6e \u81ea\u5b9a\u4e49\u8bbe\u7f6e<br>\u7c7b\u4f3c\u4e8e\u81ea\u5b9a\u4e49\u5bf9\u8c61\u3002\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1\u4eba\u5458\u53ef\u4ee5\u521b\u5efa\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\uff0c\u5e76\u4e3a\u7ec4\u7ec7\u3001\u914d\u7f6e\u6587\u4ef6\u6216\u7279\u5b9a\u7528\u6237\u5173\u8054\u81ea\u5b9a\u4e49\u6570\u636e\u3002\u6240\u6709\u81ea\u5b9a\u4e49\u8bbe\u7f6e\u6570\u636e\u90fd\u516c\u5f00\u5728\u5e94\u7528\u7a0b\u5e8f\u7f13\u5b58\u4e2d\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u8fdb\u884c\u9ad8\u6548\u8bbf\u95ee\uff0c\u800c\u65e0\u9700\u91cd\u590d\u67e5\u8be2\u6570\u636e\u5e93\u3002\u7136\u540e\uff0c\u516c\u5f0f\u5b57\u6bb5\u3001\u9a8c\u8bc1\u89c4\u5219\u3001\u6d41\u3001Apex \u548c SOAP API \u53ef\u4ee5\u4f7f\u7528\u6b64\u6570\u636e\u3002<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f7f\u7528 sObjects<\/h1>\n\n\n\n<p>\u5728\u672c\u5f00\u53d1\u4eba\u5458\u6307\u5357\u4e2d\uff0c\u8be5\u672f\u8bed\u662f\u6307\u4efb\u4f55\u5bf9\u8c61 \u53ef\u4ee5\u5b58\u50a8\u5728 Lightning \u5e73\u53f0\u6570\u636e\u5e93\u4e2d\u3002<\/p>\n\n\n\n<p><var>sObject<\/var><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>sObject \u7c7b\u578b<\/strong><br>sObject \u53d8\u91cf\u8868\u793a\u4e00\u884c\u6570\u636e\uff0c\u53ea\u80fd\u5728 Apex \u4e2d\u4f7f\u7528\u5bf9\u8c61\u7684 SOAP API \u540d\u79f0\u58f0\u660e\u3002<\/li>\n\n\n\n<li><strong>\u8bbf\u95ee SObject \u5b57\u6bb5<\/strong><\/li>\n\n\n\n<li><strong>\u9a8c\u8bc1 sObjects \u548c\u5b57\u6bb5<\/strong><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">sObject \u7c7b\u578b<\/h1>\n\n\n\n<p>sObject \u53d8\u91cf\u8868\u793a\u4e00\u884c\u6570\u636e\uff0c\u53ea\u80fd\u5728 Apex \u4e2d\u4f7f\u7528 \u5bf9\u8c61\u7684 SOAP API \u540d\u79f0\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account();\nMyCustomObject__c co = new MyCustomObject__c();<\/code><\/pre>\n\n\n\n<p>\u4e0e SOAP API \u7c7b\u4f3c\uff0cApex \u5141\u8bb8\u4f7f\u7528\u6cdb\u578b sObject \u62bd\u8c61\u7c7b\u578b\u6765 \u8868\u793a\u4efb\u4f55\u5bf9\u8c61\u3002sObject \u6570\u636e\u7c7b\u578b\u53ef\u7528\u4e8e\u5904\u7406\u4e0d\u540c sObject \u7684\u7c7b\u578b\u3002<\/p>\n\n\n\n<p>\u64cd\u4f5c\u4eba\u5458\u4ecd\u7136\u9700\u8981\u6df7\u51dd\u571f sObject \u7c7b\u578b\uff0c\u56e0\u6b64\u6240\u6709\u5b9e\u4f8b\u90fd\u662f\u7279\u5b9a\u7684 sObject\u3002\u4f8b\u5982\uff1a<samp>new<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sObject s = new Account();<\/code><\/pre>\n\n\n\n<p>\u8fd8\u53ef\u4ee5\u5728\u6cdb\u578b sObject \u7c7b\u578b\u548c\u7279\u5b9a sObject \u7c7b\u578b\u4e4b\u95f4\u4f7f\u7528\u5f3a\u5236\u8f6c\u6362\u3002 \u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Cast the generic variable s from the example above\n\/\/ into a specific account and account variable a\nAccount a = (Account)s;\n\/\/ The following generates a runtime error\nContact c = (Contact)s;<\/code><\/pre>\n\n\n\n<p>\u7531\u4e8e sObject \u7684\u5de5\u4f5c\u65b9\u5f0f\u4e0e\u5bf9\u8c61\u7c7b\u4f3c\uff0c\u56e0\u6b64\u60a8\u8fd8\u53ef\u4ee5\u5c06 \u4ee5\u540e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Object obj = s;\n\/\/ and\na = (Account)obj;<\/code><\/pre>\n\n\n\n<p>DML \u64cd\u4f5c\u9002\u7528\u4e8e\u58f0\u660e\u4e3a\u6cdb\u578b sObject \u6570\u636e\u7c7b\u578b\u7684\u53d8\u91cf\u4ee5\u53ca \u4e0e\u5e38\u89c4 sObjects\u3002<\/p>\n\n\n\n<p>sObject \u53d8\u91cf\u521d\u59cb\u5316\u4e3a \uff0c\u4f46 \u53ef\u4ee5\u4f7f\u7528\u8fd0\u7b97\u7b26\u5206\u914d\u6709\u6548\u7684\u5bf9\u8c61\u5f15\u7528\u3002\u4f8b\u5982\uff1a<samp>null<\/samp><samp>new<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account();<\/code><\/pre>\n\n\n\n<p>\u5f00\u53d1\u4eba\u5458\u8fd8\u53ef\u4ee5\u5728\u5b9e\u4f8b\u5316\u65b0\u7684 s\u5bf9\u8c61\u3002\u4f8b\u5982\uff1a<samp>name = value<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(name = 'Acme', billingcity = 'San Francisco');<\/code><\/pre>\n\n\n\n<p>\u6709\u5173\u4ece Lightning \u5e73\u53f0\u6570\u636e\u5e93\u8bbf\u95ee\u73b0\u6709 sObject \u7684\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605&nbsp;SOQL \u548c SOSL \u53c2\u8003\u4e2d\u7684\u201cSOQL \u548c SOSL \u67e5\u8be2\u201d\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u5f53\u5bf9\u8c61\u8bb0\u5f55 \u6700\u521d\u662f\u7b2c\u4e00\u6b21\u63d2\u5165\u5230\u6570\u636e\u5e93\u4e2d\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u5217\u8868\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u81ea\u5b9a\u4e49\u6807\u7b7e<\/h2>\n\n\n\n<p>\u81ea\u5b9a\u4e49\u6807\u7b7e \u4e0d\u662f\u6807\u51c6\u7684 sObject\u3002\u60a8\u65e0\u6cd5\u521b\u5efa\u81ea\u5b9a\u4e49\u6807\u7b7e\u7684\u65b0\u5b9e\u4f8b\u3002\u60a8\u53ef\u4ee5 \u4ec5\u4f7f\u7528 \u8bbf\u95ee\u81ea\u5b9a\u4e49\u6807\u7b7e\u7684\u503c\u3002\u4e3a \u4f8b\uff1a<\/p>\n\n\n\n<p><samp>system.label.<var>label_name<\/var><\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String errorMsg = System.Label.generic_error;<\/code><\/pre>\n\n\n\n<p>\u4e3a \u6709\u5173\u81ea\u5b9a\u4e49\u6807\u7b7e\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 Salesforce \u4e2d\u7684\u201c\u81ea\u5b9a\u4e49\u6807\u7b7e\u201d \u5e2e\u52a9\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u8bbf\u95ee SObject \u5b57\u6bb5<\/h1>\n\n\n\n<p>\u4e0e Java \u4e00\u6837\uff0c\u53ef\u4ee5\u4f7f\u7528\u7b80\u5355\u7684\u70b9\u8868\u793a\u6cd5\u8bbf\u95ee\u6216\u66f4\u6539 SObject \u5b57\u6bb5\u3002\u4e3a \u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account();\na.Name = 'Acme';    \/\/ Access the account name field and assign it 'Acme'<\/code><\/pre>\n\n\n\n<p>\u7cfb\u7edf\u751f\u6210\u7684\u5b57\u6bb5\uff0c\u4f8b\u5982\u201c\u521b\u5efa\u8005\u201d\u6216\u201c\u4e0a\u6b21\u4fee\u6539\u65f6\u95f4\u201d \u65e5\u671f\uff0c\u65e0\u6cd5\u4fee\u6539\u3002\u5982\u679c\u5c1d\u8bd5\uff0cApex \u8fd0\u884c\u65f6\u5f15\u64ce\u4f1a\u751f\u6210\u9519\u8bef\u3002 \u6b64\u5916\uff0c\u516c\u5f0f\u5b57\u6bb5\u503c\u548c\u5176\u4ed6\u5b57\u6bb5\u7684\u503c\u5bf9 \u65e0\u6cd5\u66f4\u6539\u4e0a\u4e0b\u6587\u7528\u6237\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u4f7f\u7528\u6cdb\u578b SObject \u7c7b\u578b\u800c\u4e0d\u662f\u7279\u5b9a\u5bf9\u8c61\uff08\u5982 Account\uff09\uff0c\u5219\u53ef\u4ee5 \u4ec5\u4f7f\u7528\u70b9\u8868\u793a\u6cd5\u68c0\u7d22\u00a0Id\u00a0\u5b57\u6bb5\u3002\u60a8\u53ef\u4ee5\u4e3a\u4f7f\u7528 Salesforce API \u7248\u672c 27.0 \u4fdd\u5b58\u7684 Apex \u4ee3\u7801\u8bbe\u7f6e\u201cId\u201d\u5b57\u6bb5\uff0c\u5e76\u4e14 \u7a0d\u540e\uff09\u3002\u6216\u8005\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u6cdb\u578b SObject \u548c\u65b9\u6cd5\u3002\u8bf7\u53c2\u89c1SObject \u7c7b\u3002<samp>putget<\/samp><\/p>\n\n\n\n<p>\u6b64\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u8bbf\u95ee&nbsp;Id&nbsp;\u5b57\u6bb5\u548c\u64cd\u4f5c \u4e0d\u5141\u8bb8\u5728\u901a\u7528 SObject \u4e0a\u4f7f\u7528\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name = 'Acme', BillingCity = 'San Francisco');\ninsert a;\nsObject s = &#91;SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];\n\/\/ This is allowed\nID id = s.Id;\n\/\/ The following line results in an error when you try to save\nString x = s.Name;\n\/\/ This line results in an error when you try to save using API version 26.0 or earlier\ns.Id = &#91;SELECT Id FROM Account WHERE Name = 'Acme' LIMIT 1].Id;<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u5982\u679c\u60a8\u7684\u7ec4\u7ec7\u5df2\u542f\u7528\u4e2a\u4eba\u5e10\u6237\uff0c\u5219\u60a8\u6709\u4e24\u79cd\u4e0d\u540c\u7c7b\u578b\u7684 \u5e10\u6237\uff1a\u4f01\u4e1a\u5e10\u6237\u548c\u4e2a\u4eba\u5e10\u6237\u3002\u5982\u679c\u60a8\u7684\u4ee3\u7801\u4f7f\u7528 \u521b\u5efa\u4e00\u4e2a\u65b0\u5e10\u6237\uff0c\u5219\u4f1a\u521b\u5efa\u4e00\u4e2a\u4e1a\u52a1\u5e10\u6237\u3002\u5982\u679c\u60a8\u7684\u4ee3\u7801 \u4f7f\u7528\u65f6\uff0c\u5c06\u521b\u5efa\u4e00\u4e2a\u4e2a\u4eba\u5e10\u6237\u3002<samp>name<\/samp><samp>LastName<\/samp>\u5982\u679c\u8981\u5bf9 SObject \u8fdb\u884c\u64cd\u4f5c\uff0c\u5efa\u8bae\u5148\u8fdb\u884c\u8f6c\u6362 \u6dfb\u52a0\u5230\u7279\u5b9a\u5bf9\u8c61\u4e2d\u3002\u4e3a \u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name = 'Acme', BillingCity = 'San Francisco');\ninsert a;\nsObject s = &#91;SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];\nID id = s.ID;\nAccount convertedAccount = (Account)s;\nconvertedAccount.name = 'Acme2';\nupdate convertedAccount;\nContact sal = new Contact(FirstName = 'Sal', Account = convertedAccount);<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0b\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u5bf9\u4e00\u7ec4\u8bb0\u5f55\u4f7f\u7528 SOSL \u6765\u786e\u5b9a\u5176 \u5bf9\u8c61\u7c7b\u578b\u3002\u5c06\u901a\u7528 SObject \u8bb0\u5f55\u8f6c\u6362\u4e3a\u8054\u7cfb\u4eba\u3001\u6f5c\u5728\u987e\u5ba2\u6216 \u5e10\u6237\uff0c\u60a8\u53ef\u4ee5\u4fee\u6539\u5176\u5b57\u6bb5 \u56e0\u6b64\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class convertToCLA {\n    List&lt;Contact&gt; contacts = new List&lt;Contact&gt;();\n    List&lt;Lead&gt; leads = new List&lt;Lead&gt;();\n    List&lt;Account&gt; accounts = new List&lt;Account&gt;();\n \n    public void convertType(String phoneNumber) {\n        List&lt;List&lt;SObject&gt;&gt; results = &#91;FIND :phoneNumber \n            IN Phone FIELDS \n            RETURNING Contact(Id, Phone, FirstName, LastName), \n            Lead(Id, Phone, FirstName, LastName), \n            Account(Id, Phone, Name)];\n        List&lt;SObject&gt; records = new List&lt;SObject&gt;();\n        records.addAll(results&#91;0]); \/\/add Contact results to our results super-set\n        records.addAll(results&#91;1]); \/\/add Lead results\n        records.addAll(results&#91;2]); \/\/add Account results\n \n        if (!records.isEmpty()) { \n            for (Integer i = 0; i &lt; records.size(); i++) { \n                SObject record = records&#91;i];\n                if (record.getSObjectType() == Contact.sObjectType) { \n                    contacts.add((Contact) record);\n                } else if (record.getSObjectType() == Lead.sObjectType){ \n                    leads.add((Lead) record);\n                } else if (record.getSObjectType() == Account.sObjectType) { \n                    accounts.add((Account) record); \n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 SObject \u5b57\u6bb5<\/h2>\n\n\n\n<p>SObject \u5b57\u6bb5\u53ef\u4ee5\u521d\u59cb\u8bbe\u7f6e\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u8bbe\u7f6e\uff08\u672a\u8bbe\u7f6e\uff09;\u672a\u8bbe\u7f6e\u7684\u5b57\u6bb5\u4e0e \u7a7a\u5b57\u6bb5\u6216\u7a7a\u767d\u5b57\u6bb5\u3002\u5728 SObject \u4e0a\u6267\u884c DML \u64cd\u4f5c\u65f6\uff0c\u53ef\u4ee5\u66f4\u6539\u5b57\u6bb5 \u8fd9\u662f\u8bbe\u7f6e\u7684;\u60a8\u65e0\u6cd5\u66f4\u6539\u672a\u8bbe\u7f6e\u7684\u5b57\u6bb5\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u82e5\u8981\u64e6\u9664\u5b57\u6bb5\u7684\u5f53\u524d\u503c\uff0c\u8bf7\u5c06\u8be5\u5b57\u6bb5\u8bbe\u7f6e\u4e3a null\u3002<\/p>\n\n\n\n<p>\u5982\u679c Apex \u65b9\u6cd5\u91c7\u7528 SObject \u53c2\u6570\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528\u00a0System.isSet\uff08\uff09\u00a0\u65b9\u6cd5\u6807\u8bc6\u8bbe\u7f6e\u5b57\u6bb5\u3002\u5982\u679c\u4f60 \u60f3\u8981\u53d6\u6d88\u8bbe\u7f6e\u4efb\u4f55\u5b57\u6bb5\u4ee5\u4fdd\u7559\u5176\u503c\uff0c\u8bf7\u5148\u521b\u5efa\u4e00\u4e2a SObject \u5b9e\u4f8b\u3002\u7136\u540e \u4ec5\u5e94\u7528\u8981\u6210\u4e3a DML \u64cd\u4f5c\u4e00\u90e8\u5206\u7684\u5b57\u6bb5\u3002<\/p>\n\n\n\n<p>\u6b64\u793a\u4f8b\u4ee3\u7801\u6f14\u793a\u5982\u4f55\u5c06 SObject \u5b57\u6bb5\u6807\u8bc6\u4e3a\u5df2\u8bbe\u7f6e\u6216\u672a\u8bbe\u7f6e\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Contact nullFirst = new Contact(LastName='Codey', FirstName=null);\nSystem.assertEquals(true, nullFirst.isSet('FirstName'), 'FirstName is set to a literal value, so it counts as set');\nContact unsetFirst = new Contact(LastName='Astro');\nSystem.assertEquals(false, unsetFirst.isSet('FirstName'), \u2018FirstName is not set\u2019);<\/code><\/pre>\n\n\n\n<p>\u4ec5\u5f53 SObject \u7684 SObject \u5b57\u6bb5\u7c7b\u578b\u4e3a Boolean \u65f6\uff0c\u8868\u8fbe\u5f0f\u7684\u8ba1\u7b97\u7ed3\u679c\u624d\u4e3a true \u5b57\u6bb5\u4e3a true\u3002\u5982\u679c\u5b57\u6bb5\u4e3a false \u6216 null\uff0c\u5219\u8868\u8fbe\u5f0f\u7684\u8ba1\u7b97\u7ed3\u679c\u4e3a false\u3002\u8fd9 \u793a\u4f8b\u4ee3\u7801\u663e\u793a\u4e86\u4e00\u4e2a\u8868\u8fbe\u5f0f\uff0c\u7528\u4e8e\u68c0\u67e5Campaign\u5bf9\u8c61\u7684\u5b57\u6bb5\u662f\u5426\u4e3anull\u3002\u56e0\u4e3a\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u603b\u662f \u8ba1\u7b97\u7ed3\u679c\u4e3a false\uff0c\u8bed\u53e5\u4e2d\u7684\u4ee3\u7801\u4e3a \u4ece\u672a\u6267\u884c\u8fc7\u3002<samp>IsActive<\/samp><samp>if<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Campaign cObj= new Campaign(); \n...\n   if (cObj.IsActive == null) {\n  ... \/\/ IsActive is evaluated to false and this code block is not executed.\n   }<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u9a8c\u8bc1 sObjects \u548c\u5b57\u6bb5<\/h1>\n\n\n\n<p>\u89e3\u6790\u548c\u9a8c\u8bc1 Apex \u4ee3\u7801\u65f6\uff0c\u5c06\u9488\u5bf9\u6240\u6709 sObject \u548c\u5b57\u6bb5\u5f15\u7528\u8fdb\u884c\u9a8c\u8bc1 \u5b9e\u9645\u7684\u5bf9\u8c61\u548c\u5b57\u6bb5\u540d\u79f0\uff0c\u5f53\u65e0\u6548\u540d\u79f0 \u4f7f\u7528\u3002\u6b64\u5916\uff0cApex \u89e3\u6790\u5668\u8fd8\u8ddf\u8e2a\u4f7f\u7528\u7684\u81ea\u5b9a\u4e49\u5bf9\u8c61\u548c\u5b57\u6bb5\uff0c\u8fd9\u4e24\u4e2a\u5bf9\u8c61\u548c\u5b57\u6bb5\u90fd\u5728 \u4ee3\u7801\u7684\u8bed\u6cd5\u4ee5\u53ca\u5d4c\u5165\u7684 SOQL \u548c SOSL \u8bed\u53e5\u3002<\/p>\n\n\n\n<p><a><\/a>\u5e73\u53f0\u4f1a\u963b\u6b62\u7528\u6237\u5728\u8fdb\u884c\u4ee5\u4e0b\u7c7b\u578b\u7684\u4fee\u6539\u65f6\u8fdb\u884c\u8fd9\u4e9b\u66f4\u6539 \u5bfc\u81f4 Apex \u4ee3\u7801\u65e0\u6548\uff1a<a><\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"code_changes_prevented_2\">\n<li>\u66f4\u6539\u5b57\u6bb5\u6216\u5bf9\u8c61\u540d\u79f0<\/li>\n\n\n\n<li>\u4ece\u4e00\u79cd\u6570\u636e\u7c7b\u578b\u8f6c\u6362\u4e3a\u53e6\u4e00\u79cd\u6570\u636e\u7c7b\u578b<\/li>\n\n\n\n<li>\u5220\u9664\u5b57\u6bb5\u6216\u5bf9\u8c61<\/li>\n\n\n\n<li>\u8fdb\u884c\u67d0\u4e9b\u7ec4\u7ec7\u8303\u56f4\u7684\u66f4\u6539\uff0c\u4f8b\u5982\u8bb0\u5f55\u5171\u4eab\u3001\u5b57\u6bb5\u5386\u53f2\u8bb0\u5f55\u8ddf\u8e2a\u6216 \u8bb0\u5f55\u7c7b\u578b<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u6570\u636e\u64cd\u4f5c\u8bed\u8a00<\/h1>\n\n\n\n<p>Apex \u4f7f\u60a8\u80fd\u591f\u5728\u6570\u636e\u5e93\u4e2d\u63d2\u5165\u3001\u66f4\u65b0\u3001\u5220\u9664\u6216\u8fd8\u539f\u6570\u636e\u3002DML\u7cfb\u5217 \u64cd\u4f5c\u5141\u8bb8\u60a8\u4e00\u6b21\u4fee\u6539\u4e00\u6761\u8bb0\u5f55\u6216\u6279\u91cf\u4fee\u6539\u8bb0\u5f55\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DML \u7684\u5de5\u4f5c\u539f\u7406<\/strong><\/li>\n\n\n\n<li><strong>\u4f7f\u7528 DML<\/strong><br>\u6dfb\u52a0\u548c\u68c0\u7d22\u6570\u636e Apex \u4e0e Lightning Platform \u6301\u4e45\u6027\u5c42\u7d27\u5bc6\u96c6\u6210\u3002\u6570\u636e\u5e93\u4e2d\u7684\u8bb0\u5f55\u53ef\u4ee5\u4f7f\u7528\u7b80\u5355\u7684\u8bed\u53e5\u76f4\u63a5\u901a\u8fc7 Apex \u63d2\u5165\u548c\u64cd\u4f5c\u3002Apex \u4e2d\u5141\u8bb8\u60a8\u5728\u6570\u636e\u5e93\u4e2d\u6dfb\u52a0\u548c\u7ba1\u7406\u8bb0\u5f55\u7684\u8bed\u8a00\u662f\u6570\u636e\u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09\u3002\u4e0e\u7528\u4e8e\u8bfb\u53d6\u64cd\u4f5c\uff08\u67e5\u8be2\u8bb0\u5f55\uff09\u7684 SOQL \u8bed\u8a00\u76f8\u6bd4\uff0cDML \u7528\u4e8e\u5199\u5165\u64cd\u4f5c\u3002<\/li>\n\n\n\n<li>DML \u8bed\u53e5\u4e0e\u6570\u636e\u5e93\u7c7b\u65b9\u6cd5 Apex \u63d0\u4f9b\u4e86\u4e24\u79cd\u6267\u884c DML \u64cd\u4f5c\u7684\u65b9\u6cd5\uff1a\u4f7f\u7528\u00a0<strong>DML \u8bed\u53e5\u6216 Database \u7c7b\u65b9\u6cd5<\/strong><br>\u3002\u8fd9\u4e3a\u6267\u884c\u6570\u636e\u64cd\u4f5c\u7684\u65b9\u5f0f\u63d0\u4f9b\u4e86\u7075\u6d3b\u6027\u3002DML \u8bed\u53e5\u4f7f\u7528\u8d77\u6765\u66f4\u7b80\u5355\uff0c\u5e76\u5bfc\u81f4\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u5904\u7406\u7684\u5f02\u5e38\u3002<\/li>\n\n\n\n<li><strong>\u4f5c\u4e3a\u539f\u5b50\u4e8b\u52a1\u7684 DML \u64cd\u4f5c<\/strong><\/li>\n\n\n\n<li><strong>DML \u64cd\u4f5c<\/strong><br>\u4f7f\u7528 DML\uff0c\u60a8\u53ef\u4ee5\u63d2\u5165\u65b0\u8bb0\u5f55\u5e76\u5c06\u5176\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002\u60a8\u8fd8\u53ef\u4ee5\u66f4\u65b0\u73b0\u6709\u8bb0\u5f55\u7684\u5b57\u6bb5\u503c\u3002<\/li>\n\n\n\n<li><strong>\u5f02\u5e38\u5904\u7406<\/strong><\/li>\n\n\n\n<li><strong>\u6709\u5173 DML<\/strong><br>\u7684\u66f4\u591a\u4fe1\u606f \u4ee5\u4e0b\u662f\u60a8\u53ef\u80fd\u60f3\u77e5\u9053\u7684\u6709\u5173\u4f7f\u7528\u6570\u636e\u64cd\u4f5c\u8bed\u8a00\u7684\u4e00\u4e9b\u4e8b\u9879\u3002<\/li>\n\n\n\n<li>\u9501\u5b9a<strong>\u8bb0\u5f55<\/strong><br>\u9501\u5b9a sObject \u8bb0\u5f55\u65f6\uff0c\u4e0d\u5141\u8bb8\u5176\u4ed6\u5ba2\u6237\u7aef\u6216\u7528\u6237\u901a\u8fc7\u4ee3\u7801\u6216 Salesforce \u7528\u6237\u754c\u9762\u8fdb\u884c\u66f4\u65b0\u3002\u9501\u5b9a\u8bb0\u5f55\u7684\u5ba2\u6237\u7aef\u53ef\u4ee5\u5bf9\u8bb0\u5f55\u6267\u884c\u903b\u8f91\u5e76\u8fdb\u884c\u66f4\u65b0\uff0c\u5e76\u4fdd\u8bc1\u9501\u5b9a\u7684\u8bb0\u5f55\u5728\u9501\u5b9a\u671f\u95f4\u4e0d\u4f1a\u88ab\u5176\u4ed6\u5ba2\u6237\u7aef\u66f4\u6539\u3002<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">DML \u7684\u5de5\u4f5c\u539f\u7406<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u5355\u4e2a DML \u64cd\u4f5c\u4e0e\u6279\u91cf DML \u64cd\u4f5c<\/h2>\n\n\n\n<p id=\"Bulk_DML\"><a><\/a>\u60a8\u53ef\u4ee5\u5bf9\u5355\u4e2a sObject \u6216\u6279\u91cf\u6267\u884c DML \u64cd\u4f5c \u5728 sObject \u5217\u8868\u4e2d\u3002\u5efa\u8bae\u6267\u884c\u6279\u91cf DML \u64cd\u4f5c\uff0c\u56e0\u4e3a \u5b83\u6709\u52a9\u4e8e\u907f\u514d\u8fbe\u5230\u8c03\u63a7\u5668\u9650\u5236\uff0c\u4f8b\u5982\u6bcf\u4e2a 150 \u4e2a\u8bed\u53e5\u7684 DML \u9650\u5236 \u9876\u70b9\u4ea4\u6613\u3002\u6b64\u9650\u5236\u65e8\u5728\u786e\u4fdd\u516c\u5e73\u8bbf\u95ee\u5171\u4eab\u8d44\u6e90 \u5728\u95ea\u7535\u5e73\u53f0\u4e2d\u3002\u5bf9 sObjects \u8ba1\u6570\u5217\u8868\u6267\u884c DML \u64cd\u4f5c \u4f5c\u4e3a\u4e00\u4e2a DML \u8bed\u53e5\uff0c\u800c\u4e0d\u662f\u6bcf\u4e2a sObject \u7684\u4e00\u4e2a\u8bed\u53e5\u3002<\/p>\n\n\n\n<p>\u6b64\u793a\u4f8b\u5bf9\u5355\u4e2a sObject \u6267\u884c DML \u8c03\u7528\uff0c\u6548\u7387\u4e0d\u9ad8\u3002<\/p>\n\n\n\n<p>\u5faa\u73af\u904d\u5386\u8054\u7cfb\u4eba\u3002\u5bf9\u4e8e\u6bcf\u4e2a \u8054\u7cfb\u4eba\uff0c\u5982\u679c\u90e8\u95e8\u5b57\u6bb5\u4e0e\u67d0\u4e2a\u503c\u5339\u914d\uff0c\u5219\u4e3a Description__c\u5b57\u6bb5\u3002\u5982\u679c\u5217\u8868\u5305\u542b\u7684\u9879\u76ee\u4e0d\u6b62\uff0c\u5219\u7b2c 151 \u6b21\u66f4\u65b0 \u8fd4\u56de\u65e0\u6cd5\u6355\u83b7\u7684\u5f02\u5e38\u3002<samp>for<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;Contact&gt; conList = &#91;Select Department , Description from Contact];\nfor(Contact badCon : conList) {\n    if (badCon.Department == 'Finance') {\n        badCon.Description__c = 'New description';\n    }\n    \/\/ Not a good practice since governor limits might be hit.\n    update badCon;\n}<\/code><\/pre>\n\n\n\n<p>\u6b64\u793a\u4f8b\u662f\u4e0a\u4e00\u4e2a\u793a\u4f8b\u7684\u4fee\u6539\u7248\u672c\uff0c\u8be5\u793a\u4f8b\u672a\u547d\u4e2d \u8c03\u901f\u5668\u9650\u5236\u3002DML \u64cd\u4f5c\u662f\u901a\u8fc7\u8c03\u7528\u8054\u7cfb\u4eba\u5217\u8868\u6279\u91cf\u6267\u884c\u7684\u3002\u6b64\u4ee3\u7801\u8ba1\u6570 \u4f5c\u4e3a\u4e00\u4e2a DML \u8bed\u53e5\uff0c\u8fdc\u4f4e\u4e8e 150 \u7684\u9650\u5236\u3002<samp>update<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ List to hold the new contacts to update.\nList&lt;Contact&gt; updatedList = new List&lt;Contact&gt;();\nList&lt;Contact&gt; conList = &#91;Select Department , Description from Contact];\nfor(Contact con : conList) {\n    if (con.Department == 'Finance') {\n        con.Description = 'New description';\n        \/\/ Add updated contact sObject to the list.\n        updatedList.add(con);\n    }\n}\n\n\/\/ Call update on the list of contacts.\n\/\/ This results in one DML call for the entire list.\nupdate updatedList;<\/code><\/pre>\n\n\n\n<p>\u53e6\u4e00\u4e2a DML \u8c03\u63a7\u5668\u9650\u5236\u662f DML \u53ef\u4ee5\u5904\u7406\u7684\u603b\u884c\u6570 \u5355\u4e2a\u4e8b\u52a1\u4e2d\u7684\u64cd\u4f5c\uff0c\u5373 10,000 \u4e2a\u3002\u6240\u6709 DML \u5904\u7406\u7684\u6240\u6709\u884c \u540c\u4e00\u4e8b\u52a1\u8ba1\u6570\u7684\u8c03\u7528\u5c06\u9012\u589e\u5230\u6b64\u9650\u5236\u3002\u4f8b\u5982\uff0c\u5982\u679c \u60a8\u5728\u540c\u4e00\u7b14\u4ea4\u6613\u4e2d\u63d2\u5165 100 \u4e2a\u8054\u7cfb\u4eba\u5e76\u66f4\u65b0 50 \u4e2a\u8054\u7cfb\u4eba\uff0c\u60a8\u7684\u603b\u6570 DML \u5904\u7406\u7684\u884c\u6570\u4e3a 150\u3002\u60a8\u8fd8\u5269\u4e0b 9,850 \u884c \uff0810,000 &#8211; 150\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a><\/a>\u7cfb\u7edf\u4e0a\u4e0b\u6587\u548c\u5171\u4eab\u89c4\u5219<\/h2>\n\n\n\n<p>\u5927\u591a\u6570 DML \u64cd\u4f5c\u5728\u7cfb\u7edf\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\uff0c\u5ffd\u7565\u5f53\u524d\u7528\u6237\u7684 \u6743\u9650\u3001\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027\u3001\u7ec4\u7ec7\u8303\u56f4\u7684\u9ed8\u8ba4\u503c\u3001\u89d2\u8272\u4e2d\u7684\u4f4d\u7f6e \u5c42\u6b21\u7ed3\u6784\u548c\u5171\u4eab\u89c4\u5219\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605<a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.apexcode.meta\/apexcode\/apex_security_sharing_rules.htm\">\u5f3a\u5236\u6267\u884c\u5171\u4eab\u89c4\u5219<\/a>\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u5982\u679c\u60a8\u5728\u533f\u540d\u5757\u4e2d\u6267\u884c DML \u64cd\u4f5c\uff0c\u5219\u5b83\u4eec\u5c06\u4f7f\u7528 \u5f53\u524d\u7528\u6237\u7684\u5bf9\u8c61\u7ea7\u548c\u5b57\u6bb5\u7ea7\u6743\u9650\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6700\u4f73\u5b9e\u8df5<\/h2>\n\n\n\n<p>\u4f7f\u7528 SObjects \u4e0a\u7684 DML\uff0c\u6700\u597d\u6784\u9020\u65b0\u5b9e\u4f8b\u5e76\u4ec5\u66f4\u65b0\u5b57\u6bb5 \u60a8\u5e0c\u671b\u5728\u4e0d\u67e5\u8be2\u5176\u4ed6\u5b57\u6bb5\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u4fee\u6539\u3002\u5982\u679c\u67e5\u8be2 \u8981\u66f4\u65b0\u7684\u5b57\u6bb5\uff0c\u60a8\u53ef\u4ee5\u8fd8\u539f\u67e5\u8be2\u7684\u5b57\u6bb5\u503c\uff0c\u8fd9\u4e9b\u5b57\u6bb5\u503c\u53ef\u80fd\u5177\u6709 \u5728\u67e5\u8be2\u548c DML \u4e4b\u95f4\u66f4\u6539\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f7f\u7528 DML \u6dfb\u52a0\u548c\u68c0\u7d22\u6570\u636e<\/h1>\n\n\n\n<p>Apex \u4e0e Lightning Platform \u6301\u4e45\u6027\u5c42\u7d27\u5bc6\u96c6\u6210\u3002\u8bb0\u5f55 \u53ef\u4ee5\u4f7f\u7528\u7b80\u5355\u7684\u8bed\u53e5\u76f4\u63a5\u901a\u8fc7 Apex \u63d2\u5165\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u3002 Apex \u4e2d\u5141\u8bb8\u60a8\u5728\u6570\u636e\u5e93\u4e2d\u6dfb\u52a0\u548c\u7ba1\u7406\u8bb0\u5f55\u7684\u8bed\u8a00\u662f\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09\u3002\u4e0e\u7528\u4e8e\u8bfb\u53d6\u7684 SOQL \u8bed\u8a00\u76f8\u6bd4 \u64cd\u4f5c\uff08\u67e5\u8be2\u8bb0\u5f55\uff09\uff0cDML \u7528\u4e8e\u5199\u5165\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u5728\u63d2\u5165\u6216\u64cd\u4f5c\u8bb0\u5f55\u4e4b\u524d\uff0c\u8bb0\u5f55\u6570\u636e\u5728\u5185\u5b58\u4e2d\u4f5c\u4e3a sObject \u521b\u5efa\u3002 sObject \u6570\u636e\u7c7b\u578b\u662f\u6cdb\u578b\u6570\u636e\u7c7b\u578b\uff0c\u5bf9\u5e94\u4e8e \u5c06\u4fdd\u5b58\u8bb0\u5f55\u6570\u636e\u7684\u53d8\u91cf\u3002\u6709\u7279\u5b9a\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5b50\u7c7b\u578b\u4ece sObject \u6570\u636e\u7c7b\u578b\uff0c\u5bf9\u5e94\u4e8e\u6807\u51c6\u5bf9\u8c61\u8bb0\u5f55\u7684\u6570\u636e\u7c7b\u578b\uff0c\u4f8b\u5982 \u4f5c\u4e3a Account \u6216 Contact\uff0c\u4ee5\u53ca\u81ea\u5b9a\u4e49\u5bf9\u8c61\uff0c\u4f8b\u5982 Invoice_Statement__c\u3002\u901a\u5e38\uff0c\u60a8 \u5c06\u5904\u7406\u8fd9\u4e9b\u7279\u5b9a\u7684 sObject \u6570\u636e\u7c7b\u578b\u3002\u4f46\u6709\u65f6\uff0c\u5f53\u4f60\u4e0d\u8fd9\u6837\u505a\u65f6 \u63d0\u524d\u77e5\u9053 sObject \u7684\u7c7b\u578b\uff0c\u5c31\u53ef\u4ee5\u4f7f\u7528\u901a\u7528\u7684 sObject \u6570\u636e\u4e86 \u7c7b\u578b\u3002\u8fd9\u662f\u4e00\u4e2a\u793a\u4f8b\uff0c\u8bf4\u660e\u5982\u4f55\u521b\u5efa\u65b0\u7684\u7279\u5b9a\u5e10\u6237 sObject \u5e76\u5206\u914d \u5b83\u8bbe\u7f6e\u4e3a\u53d8\u91cf\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name='Account Example');<\/code><\/pre>\n\n\n\n<p>\u5728\u524d\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u53d8\u91cf\u5f15\u7528\u7684\u5e10\u6237\u5b58\u5728\u4e8e\u5185\u5b58\u4e2d\uff0c\u5e76\u5e26\u6709\u5fc5\u586b\u5b57\u6bb5\u3002\u4f46\u662f\uff0c\u5b83\u5c1a\u672a\u6301\u4e45\u5316\u5230 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u3002\u60a8\u9700\u8981\u8c03\u7528 DML \u8bed\u53e5\u6765\u6301\u4e45\u5316 s\u5bf9\u8c61\u6dfb\u52a0\u5230\u6570\u636e\u5e93\u3002\u4e0b\u9762\u662f\u521b\u5efa\u548c\u4fdd\u7559\u6b64\u5e10\u6237\u7684\u793a\u4f8b \u4f7f\u7528\u8bed\u53e5\u3002<samp>a<\/samp><samp>Name<\/samp><samp>insert<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name='Account Example');\ninsert a;<\/code><\/pre>\n\n\n\n<p>\u6b64\u5916\uff0c\u8fd8\u53ef\u4ee5\u4f7f\u7528 DML \u4fee\u6539\u5df2\u63d2\u5165\u7684\u8bb0\u5f55\u3002\u5176\u4e2d \u60a8\u53ef\u4ee5\u6267\u884c\u7684\u64cd\u4f5c\u5305\u62ec\u8bb0\u5f55\u66f4\u65b0\u3001\u5220\u9664\u3001\u4ece \u56de\u6536\u7ad9\u3001\u5408\u5e76\u8bb0\u5f55\u6216\u8f6c\u6362\u6f5c\u5728\u5ba2\u6237\u3002\u67e5\u8be2\u8bb0\u5f55\u540e\uff0c\u60a8\u5c06\u83b7\u5f97 sObject \u5b9e\u4f8b\uff0c\u60a8\u53ef\u4ee5\u4fee\u6539\u8fd9\u4e9b\u5b9e\u4f8b\uff0c\u7136\u540e\u4fdd\u7559\u5176\u66f4\u6539\u3002\u8fd9\u662f\u4e00\u4e2a \u67e5\u8be2\u4ee5\u524d\u4fdd\u7559\u7684\u73b0\u6709\u8bb0\u5f55\u7684\u793a\u4f8b\uff0c\u66f4\u65b0 \u5185\u5b58\u4e2d\u6b64\u8bb0\u5f55\u7684 sObject \u8868\u793a\u5f62\u5f0f\u4e0a\u7684\u51e0\u4e2a\u5b57\u6bb5\uff0c\u7136\u540e \u5c06\u6b64\u66f4\u6539\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Query existing account.\nAccount a = &#91;SELECT Name,Industry \n               FROM Account \n               WHERE Name='Account Example' LIMIT 1];\n\n\/\/ Write the old values the debug log before updating them.\nSystem.debug('Account Name before update: ' + a.Name); \/\/ Name is Account Example\nSystem.debug('Account Industry before update: ' + a.Industry);\/\/ Industry is not set\n\n\/\/ Modify the two fields on the sObject.\na.Name = 'Account of the Day';\na.Industry = 'Technology';\n\n\/\/ Persist the changes.\nupdate a;\n\n\/\/ Get a new copy of the account from the database with the two fields.\nAccount a = &#91;SELECT Name,Industry \n             FROM Account \n             WHERE Name='Account of the Day' LIMIT 1];\n\n\/\/ Verify that updated field values were persisted.\nSystem.assertEquals('Account of the Day', a.Name);\nSystem.assertEquals('Technology', a.Industry);<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">DML \u8bed\u53e5\u4e0e\u6570\u636e\u5e93\u7c7b\u65b9\u6cd5<\/h1>\n\n\n\n<p>Apex \u63d0\u4f9b\u4e86\u4e24\u79cd\u6267\u884c DML \u64cd\u4f5c\u7684\u65b9\u6cd5\uff1a\u4f7f\u7528 DML \u8bed\u53e5\u6216\u6570\u636e\u5e93 \u7c7b\u65b9\u6cd5\u3002\u8fd9\u4e3a\u6267\u884c\u6570\u636e\u64cd\u4f5c\u7684\u65b9\u5f0f\u63d0\u4f9b\u4e86\u7075\u6d3b\u6027\u3002DML \u8bed\u53e5 \u66f4\u6613\u4e8e\u4f7f\u7528\uff0c\u5e76\u5bfc\u81f4\u60a8\u53ef\u4ee5\u5728 \u6cd5\u5178\u3002<\/p>\n\n\n\n<p>\u8fd9\u662f \u7528\u4e8e\u63d2\u5165\u65b0\u8bb0\u5f55\u7684 DML \u8bed\u53e5\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Create the list of sObjects to insert\nList&lt;Account&gt; acctList = new List&lt;Account&gt;();\nacctList.add(new Account(Name='Acme1'));\nacctList.add(new Account(Name='Acme2'));\n\n\/\/ DML statement\ninsert acctList;<\/code><\/pre>\n\n\n\n<p>\u8fd9\u662f\u4e0a\u4e00\u4e2a\u793a\u4f8b\u7684\u7b49\u6548\u793a\u4f8b\uff0c\u4f46\u5b83\u4f7f\u7528\u4e86 Database \u7684\u65b9\u6cd5 \u7c7b\u800c\u4e0d\u662f DML \u8c13\u8bcd\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Create the list of sObjects to insert\nList&lt;Account&gt; acctList = new List&lt;Account&gt;();\nacctList.add(new Account(Name='Acme1'));\nacctList.add(new Account(Name='Acme2'));\n\n\/\/ DML statement\nDatabase.SaveResult&#91;] srList = Database.insert(acctList, false);\n\n\/\/ Iterate through each returned result\nfor (Database.SaveResult sr : srList) {\n    if (sr.isSuccess()) {\n        \/\/ Operation was successful, so get the ID of the record that was processed\n        System.debug('Successfully inserted account. Account ID: ' + sr.getId());\n    }\n    else {\n        \/\/ Operation failed, so get all errors                \n        for(Database.Error err : sr.getErrors()) {\n            System.debug('The following error has occurred.');                    \n            System.debug(err.getStatusCode() + ': ' + err.getMessage());\n            System.debug('Account fields that affected this error: ' + err.getFields());\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u8fd9\u4e24\u4e2a\u9009\u9879\u4e4b\u95f4\u7684\u4e00\u4e2a\u533a\u522b\u662f\uff0c\u901a\u8fc7\u4f7f\u7528 Database \u7c7b\u65b9\u6cd5\uff0c\u60a8\u53ef\u4ee5 \u53ef\u4ee5\u6307\u5b9a\u5728\u51fa\u73b0\u9519\u8bef\u65f6\u662f\u5426\u5141\u8bb8\u90e8\u5206\u8bb0\u5f55\u5904\u7406 \u9047\u5230\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7\u4f20\u9012\u989d\u5916\u7684\u7b2c\u4e8c\u4e2a\u5e03\u5c14\u53c2\u6570\u6765\u5b9e\u73b0\u6b64\u76ee\u7684\u3002\u5982\u679c\u4f60 \u6307\u5b9a\u6b64\u53c2\u6570\uff0c\u5982\u679c a \u8bb0\u5f55 \u5931\u8d25\uff0c\u5176\u4f59\u7684 DML \u64cd\u4f5c\u4ecd\u7136\u53ef\u4ee5\u6210\u529f\u3002\u6b64\u5916\uff0c\u9664\u4e86\u4f8b\u5916\uff0c\u4e00\u4e2a result \u5bf9\u8c61\u6570\u7ec4\uff08\u5982\u679c\u53ea\u4f20\u5165\u4e00\u4e2a sObject\uff0c\u5219\u8fd4\u56de\u4e00\u4e2a result \u5bf9\u8c61\uff09 \u5305\u542b\u6bcf\u4e2a\u64cd\u4f5c\u7684\u72b6\u6001\u548c\u9047\u5230\u7684\u4efb\u4f55\u9519\u8bef\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6b64 \u53ef\u9009\u53c2\u6570\u662f \uff0c\u8fd9\u610f\u5473\u7740\u5982\u679c \u81f3\u5c11\u4e00\u4e2a sObject \u65e0\u6cd5\u5904\u7406\uff0c\u6240\u6709\u5269\u4f59\u7684 sObject \u90fd\u4e0d\u4f1a\u5904\u7406\uff0c\u5e76\u4e14 \u5bf9\u4e8e\u5bfc\u81f4\u5931\u8d25\u7684\u8bb0\u5f55\uff0c\u5c06\u5f15\u53d1\u5f02\u5e38\u3002<samp>false<\/samp><samp>true<\/samp><\/p>\n\n\n\n<p>\u4ee5\u4e0b\u5185\u5bb9\u53ef\u5e2e\u52a9\u60a8\u51b3\u5b9a\u4f55\u65f6\u8981\u4f7f\u7528 DML \u8bed\u53e5\u6216 Database \u7c7b \u65b9\u6cd5\u3002<a><\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"DMLStatementsOrMethodsChoice\">\n<li>\u5982\u679c\u60a8\u5e0c\u671b\u5728\u6279\u91cf DML \u5904\u7406\u671f\u95f4\u53d1\u751f\u7684\u4efb\u4f55\u9519\u8bef\uff0c\u8bf7\u4f7f\u7528 DML \u8bed\u53e5 \u4f5c\u4e3a Apex \u5f02\u5e38\u5f15\u53d1\uff0c\u8be5\u5f02\u5e38\u4f1a\u7acb\u5373\u4e2d\u65ad\u63a7\u5236\u6d41\uff08\u901a\u8fc7\u4f7f\u7528\u5757\uff09\u3002\u6b64\u884c\u4e3a\u662f \u4e0e\u5927\u591a\u6570\u6570\u636e\u5e93\u8fc7\u7a0b\u8bed\u8a00\u4e2d\u5904\u7406\u5f02\u5e38\u7684\u65b9\u5f0f\u7c7b\u4f3c\u3002<samp>try. . .catch<\/samp><\/li>\n\n\n\n<li>\u5982\u679c\u8981\u5141\u8bb8\u6279\u91cf DML \u90e8\u5206\u6210\u529f\uff0c\u8bf7\u4f7f\u7528 Database \u7c7b\u65b9\u6cd5 \u64cd\u4f5c &#8211; \u5982\u679c\u8bb0\u5f55\u5931\u8d25\uff0cDML \u64cd\u4f5c\u7684\u5176\u4f59\u90e8\u5206\u4ecd\u53ef \u6210\u529f\u3002\u7136\u540e\uff0c\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u68c0\u67e5\u88ab\u62d2\u7edd\u7684\u8bb0\u5f55\uff0c\u5e76\u53ef\u80fd\u91cd\u8bd5 \u64cd\u4f5c\u3002\u4f7f\u7528\u6b64\u7a97\u4f53\u65f6\uff0c\u53ef\u4ee5\u7f16\u5199\u4ece\u4e0d\u5f15\u53d1 DML \u7684\u4ee3\u7801 \u5f02\u5e38\u9519\u8bef\u3002\u76f8\u53cd\uff0c\u60a8\u7684\u4ee3\u7801\u53ef\u4ee5\u4f7f\u7528\u9002\u5f53\u7684 results \u6570\u7ec4\u6765\u5224\u65ad \u6210\u529f\u6216\u5931\u8d25\u3002\u8bf7\u6ce8\u610f\uff0cDatabase \u65b9\u6cd5\u8fd8\u5305\u62ec\u652f\u6301 \u5f15\u53d1\u5f02\u5e38\uff0c\u7c7b\u4f3c\u4e8e DML \u8bed\u53e5\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u9664\u4e86\u5c11\u6570\u64cd\u4f5c\u5916\uff0c\u5927\u591a\u6570\u64cd\u4f5c\u5728\u4e24\u8005\u4e4b\u95f4\u91cd\u53e0\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u64cd\u4f5c\u4ec5 \u53ef\u7528\u4f5c Database \u7c7b\u65b9\u6cd5\uff0c\u800c\u4e0d\u662f DML \u8bed\u53e5\u3002<samp>convertLead<\/samp><\/li>\n\n\n\n<li>Database \u7c7b\u8fd8\u63d0\u4f9b\u4e86\u4e0d\u4f5c\u4e3a DML \u8bed\u53e5\u63d0\u4f9b\u7684\u65b9\u6cd5\uff0c\u4f8b\u5982 \u4f5c\u4e3a\u4e8b\u52a1\u63a7\u5236\u548c\u56de\u6eda\u7684\u65b9\u6cd5\uff0c\u6e05\u7a7a\u56de\u6536\u7ad9\uff0c\u4ee5\u53ca \u4e0e SOQL \u67e5\u8be2\u76f8\u5173\u7684\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f5c\u4e3a\u539f\u5b50\u4e8b\u52a1\u7684 DML \u64cd\u4f5c<\/h1>\n\n\n\n<p><a><\/a>DML \u64cd\u4f5c\u5728\u4e8b\u52a1\u4e2d\u6267\u884c\u3002\u6240\u6709 DML \u64cd\u4f5c \u5728\u4e8b\u52a1\u4e2d\uff0c\u8981\u4e48\u6210\u529f\u5b8c\u6210\uff0c\u8981\u4e48\u5728\u4e00\u4e2a\u64cd\u4f5c\u4e2d\u53d1\u751f\u9519\u8bef\uff0c\u5219\u6574\u4e2a \u4e8b\u52a1\u5c06\u56de\u6eda\uff0c\u5e76\u4e14\u4e0d\u4f1a\u5c06\u4efb\u4f55\u6570\u636e\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002\u4e8b\u52a1\u7684\u8fb9\u754c \u53ef\u4ee5\u662f\u89e6\u53d1\u5668\u3001\u7c7b\u65b9\u6cd5\u3001\u533f\u540d\u4ee3\u7801\u5757\u3001Apex \u9875\u9762\u6216\u81ea\u5b9a\u4e49 Web \u670d\u52a1 \u65b9\u6cd5\u3002<\/p>\n\n\n\n<p>\u5728\u4e8b\u52a1\u8fb9\u754c\u5185\u53d1\u751f\u7684\u6240\u6709\u64cd\u4f5c\u90fd\u8868\u793a\u4e00\u4e2a\u64cd\u4f5c\u5355\u5143\u3002 \u8fd9\u4e5f\u9002\u7528\u4e8e\u4ece\u4e8b\u52a1\u8fb9\u754c\u5bf9\u5916\u90e8\u4ee3\u7801\u8fdb\u884c\u7684\u8c03\u7528\uff0c\u4f8b\u5982 \u7531\u4e8e\u5728\u4e8b\u52a1\u8fb9\u754c\u4e2d\u8fd0\u884c\u7684\u4ee3\u7801\u800c\u89e6\u53d1\u7684\u7c7b\u6216\u89e6\u53d1\u5668\u3002\u4e3a \u4f8b\u5982\uff0c\u8bf7\u8003\u8651\u4ee5\u4e0b\u64cd\u4f5c\u94fe\uff1a\u81ea\u5b9a\u4e49 Apex Web \u670d\u52a1\u65b9\u6cd5\u8c03\u7528\u65b9\u6cd5 \u5728\u6267\u884c\u67d0\u4e9b DML \u64cd\u4f5c\u7684\u7c7b\u4e2d\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u66f4\u6539\u90fd\u5c06\u63d0\u4ea4\u5230 \u53ea\u6709\u5728\u4e8b\u52a1\u4e2d\u7684\u6240\u6709\u64cd\u4f5c\u5b8c\u6210\u6267\u884c\u540e\u624d\u4f7f\u7528\u6570\u636e\u5e93\uff0c\u5e76\u4e14\u4e0d\u4f1a\u5bfc\u81f4\u4efb\u4f55\u9519\u8bef\u3002 \u5982\u679c\u5728\u4efb\u4f55\u4e2d\u95f4\u6b65\u9aa4\u4e2d\u53d1\u751f\u9519\u8bef\uff0c\u5219\u5c06\u56de\u6eda\u6240\u6709\u6570\u636e\u5e93\u66f4\u6539\uff0c\u5e76\u4e14 \u4e8b\u52a1\u672a\u63d0\u4ea4\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">DML \u64cd\u4f5c<\/h1>\n\n\n\n<p>\u4f7f\u7528 DML\uff0c\u60a8\u53ef\u4ee5\u63d2\u5165\u65b0\u8bb0\u5f55\u5e76\u5c06\u5176\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002\u60a8\u8fd8\u53ef\u4ee5 \u66f4\u65b0\u73b0\u6709\u8bb0\u5f55\u7684\u5b57\u6bb5\u503c\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u63d2\u5165\u548c\u66f4\u65b0\u8bb0\u5f55<\/strong><br>\u4f7f\u7528 DML\uff0c\u60a8\u53ef\u4ee5\u63d2\u5165\u65b0\u8bb0\u5f55\u5e76\u5c06\u5176\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002\u540c\u6837\uff0c\u60a8\u53ef\u4ee5\u66f4\u65b0\u73b0\u6709\u8bb0\u5f55\u7684\u5b57\u6bb5\u503c\u3002<\/li>\n\n\n\n<li><strong>Upserting \u63d0\u5355\u8bb0\u5f55<\/strong><\/li>\n\n\n\n<li><strong>\u5408\u5e76\u8bb0\u5f55<\/strong><\/li>\n\n\n\n<li><strong>\u5220\u9664\u8bb0\u5f55<\/strong><\/li>\n\n\n\n<li><strong>\u6062\u590d\u5df2\u5220\u9664\u7684\u8bb0\u5f55<\/strong><\/li>\n\n\n\n<li><strong>\u8f6c\u6362\u6f5c\u5728\u5ba2\u6237<\/strong><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u63d2\u5165\u548c\u66f4\u65b0\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u4f7f\u7528 DML\uff0c\u60a8\u53ef\u4ee5\u63d2\u5165\u65b0\u8bb0\u5f55\u5e76\u5c06\u5176\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u3002\u540c\u6837\uff0c\u4f60 \u53ef\u4ee5\u66f4\u65b0\u73b0\u6709\u8bb0\u5f55\u7684\u5b57\u6bb5\u503c\u3002<\/p>\n\n\n\n<p>\u91cd\u8981<\/p>\n\n\n\n<p>\u5728\u53ef\u80fd\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u66f4\u6539\u4e86\u975e\u5305\u5bb9\u6027\u6761\u6b3e\uff0c\u4ee5\u7b26\u5408\u6211\u4eec\u7684 \u5e73\u7b49\u7684\u516c\u53f8\u4ef7\u503c\u89c2\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u67d0\u4e9b\u6761\u6b3e\uff0c\u4ee5\u907f\u514d\u5bf9 \u5ba2\u6237\u5b9e\u65bd\u3002<\/p>\n\n\n\n<p>\u672c\u793a\u4f8b\u63d2\u5165\u4e09\u6761\u5ba2\u6237\u8bb0\u5f55\u5e76\u66f4\u65b0\u73b0\u6709\u5ba2\u6237\u8bb0\u5f55\u3002\u7b2c\u4e00 \u521b\u5efa\u4e09\u4e2a\u5e10\u6237 sObject \u5e76\u5c06\u5176\u6dfb\u52a0\u5230\u5217\u8868\u4e2d\u3002\u63d2\u5165\u8bed\u53e5\u6279\u91cf\u63d2\u5165 \u5e10\u6237\u5217\u8868\u4f5c\u4e3a\u53c2\u6570\u3002\u7136\u540e\uff0c\u66f4\u65b0\u7b2c\u4e8c\u4e2a\u5ba2\u6237\u8bb0\u5f55\uff0c \u66f4\u65b0\u8ba1\u8d39\u57ce\u5e02\uff0c\u5e76\u8c03\u7528 update \u8bed\u53e5\u4ee5\u5c06\u66f4\u6539\u4fdd\u7559\u5728 \u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account&#91;] accts = new List&lt;Account&gt;();\nfor(Integer i=0;i&lt;3;i++) {\n    Account a = new Account(Name='Acme' + i, \n                            BillingCity='San Francisco');\n    accts.add(a);\n}\nAccount accountToUpdate;\ntry {\n    insert accts;        \n    \n    \/\/ Update account Acme2.\n    accountToUpdate = \n        &#91;SELECT BillingCity FROM Account \n         WHERE Name='Acme2' AND BillingCity='San Francisco'\n         LIMIT 1];\n    \/\/ Update the billing city.\n    accountToUpdate.BillingCity = 'New York';\n    \/\/ Make the update call.\n    update accountToUpdate;\n} catch(DmlException e) {\n    System.debug('An unexpected error has occurred: ' + e.getMessage());\n}\n\n\/\/ Verify that the billing city was updated to New York.\nAccount afterUpdate = \n    &#91;SELECT BillingCity FROM Account WHERE Id=:accountToUpdate.Id];\nSystem.assertEquals('New York', afterUpdate.BillingCity);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u63d2\u5165\u76f8\u5173\u8bb0\u5f55<\/h2>\n\n\n\n<p>\u5982\u679c\u5173\u7cfb\u5df2\u7ecf\u5b58\u5728\uff0c\u5219\u53ef\u4ee5\u63d2\u5165\u4e0e\u73b0\u6709\u8bb0\u5f55\u76f8\u5173\u7684\u8bb0\u5f55 \u5728\u4e24\u4e2a\u5bf9\u8c61\u4e4b\u95f4\u5b9a\u4e49\uff0c\u4f8b\u5982\u67e5\u627e\u6216\u4e3b\u4ece\u5173\u7cfb\u3002\u4e00\u4e2a \u8bb0\u5f55\u901a\u8fc7\u5916\u952e ID \u4e0e\u76f8\u5173\u8bb0\u5f55\u76f8\u5173\u8054\u3002\u4f8b\u5982 \u63d2\u5165\u65b0\u8054\u7cfb\u4eba\u65f6\uff0c\u53ef\u4ee5\u6307\u5b9a\u8054\u7cfb\u4eba\u7684\u76f8\u5173\u5ba2\u6237\u8bb0\u5f55 \u901a\u8fc7\u8bbe\u7f6e\u5b57\u6bb5\u7684\u503c\u3002<samp>AccountId<\/samp><\/p>\n\n\n\n<p>\u672c\u793a\u4f8b\u901a\u8fc7\u8bbe\u7f6e\u8054\u7cfb\u4eba\u7684\u5b57\u6bb5\u5c06\u8054\u7cfb\u4eba\u6dfb\u52a0\u5230\u5ba2\u6237\uff08\u76f8\u5173\u8bb0\u5f55\uff09\u4e2d\u3002\u8054\u7cfb\u548c \u5e10\u6237\u901a\u8fc7\u67e5\u627e\u5173\u7cfb\u94fe\u63a5\u3002<samp>AccountId<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    Account acct = new Account(Name='SFDC Account');\n    insert acct;\n\n    \/\/ Once the account is inserted, the sObject will be \n    \/\/ populated with an ID.\n    \/\/ Get this ID.\n    ID acctID = acct.ID;\n\n    \/\/ Add a contact to this account.\n    Contact con = new Contact(\n        FirstName='Joe',\n        LastName='Smith',\n        Phone='415.555.1212',\n        AccountId=acctID);\n    insert con;\n} catch(DmlException e) {\n    System.debug('An unexpected error has occurred: ' + e.getMessage());\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u66f4\u65b0\u76f8\u5173\u8bb0\u5f55<\/h2>\n\n\n\n<p>\u65e0\u6cd5\u4f7f\u7528\u5bf9 DML \u64cd\u4f5c\u7684\u76f8\u540c\u8c03\u7528\u6765\u66f4\u65b0\u76f8\u5173\u8bb0\u5f55\u4e0a\u7684\u5b57\u6bb5 \u5e76\u4e14\u9700\u8981\u5355\u72ec\u7684 DML \u8c03\u7528\u3002\u4f8b\u5982\uff0c\u5982\u679c\u63d2\u5165\u65b0\u8054\u7cfb\u4eba\uff0c\u60a8\u53ef\u4ee5 \u901a\u8fc7\u8bbe\u7f6e\u5b57\u6bb5\u7684\u503c\u6765\u6307\u5b9a\u8054\u7cfb\u4eba\u7684\u76f8\u5173\u5ba2\u6237\u8bb0\u5f55\u3002\u4f46\u662f\uff0c\u60a8\u65e0\u6cd5\u66f4\u6539 \u5e10\u6237\u7684\u540d\u79f0\uff0c\u800c\u4e0d\u4f7f\u7528\u5355\u72ec\u7684 DML \u8c03\u7528\u66f4\u65b0\u5e10\u6237\u672c\u8eab\u3002 \u540c\u6837\uff0c\u5728\u66f4\u65b0\u8054\u7cfb\u4eba\u65f6\uff0c\u5982\u679c\u60a8\u8fd8\u60f3\u66f4\u65b0\u8054\u7cfb\u4eba\u7684 \u76f8\u5173\u5e10\u6237\uff0c\u60a8\u5fc5\u987b\u8fdb\u884c\u4e24\u6b21 DML \u8c03\u7528\u3002\u4ee5\u4e0b\u793a\u4f8b\u66f4\u65b0\u4e86\u4e00\u4e2a \u4f7f\u7528\u4e24\u4e2a\u8bed\u53e5\u7684\u8054\u7cfb\u4eba\u53ca\u5176\u76f8\u5173\u5e10\u6237\u3002<\/p>\n\n\n\n<p><samp>AccountId<\/samp><samp>update<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>try {\n    \/\/ Query for the contact, which has been associated with an account.\n    Contact queriedContact = &#91;SELECT Account.Name \n                              FROM Contact \n                              WHERE FirstName = 'Joe' AND LastName='Smith'\n                              LIMIT 1];\n\n    \/\/ Update the contact's phone number\n    queriedContact.Phone = '415.555.1213';\n\n    \/\/ Update the related account industry\n    queriedContact.Account.Industry = 'Technology';\n\n    \/\/ Make two separate calls \n    \/\/ 1. This call is to update the contact's phone.\n    update queriedContact;\n    \/\/ 2. This call is to update the related account's Industry field.\n    update queriedContact.Account; \n} catch(Exception e) {\n    System.debug('An unexpected error has occurred: ' + e.getMessage());\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4f7f\u7528\u5916\u90e8 ID \u5173\u8054<\/strong>\u8bb0\u5f55 \u4f7f\u7528\u7236\u8bb0\u5f55\u4e0a\u7684\u81ea\u5b9a\u4e49\u5916\u90e8 ID<br>\u5b57\u6bb5\u6dfb\u52a0\u76f8\u5173\u8bb0\u5f55\u3002\u901a\u8fc7\u5916\u90e8 ID \u5b57\u6bb5\u5173\u8054\u8bb0\u5f55\u662f\u4f7f\u7528\u8bb0\u5f55 ID \u7684\u66ff\u4ee3\u65b9\u6cd5\u3002\u4ec5\u5f53\u5df2\u4e3a\u6240\u6d89\u53ca\u7684\u5bf9\u8c61\u5b9a\u4e49\u4e86\u5173\u7cfb\uff08\u5982\u4e3b\u4ece-\u7ec6\u8282\u6216\u67e5\u627e\uff09\u65f6\uff0c\u624d\u80fd\u5c06\u76f8\u5173\u8bb0\u5f55\u6dfb\u52a0\u5230\u53e6\u4e00\u6761\u8bb0\u5f55\u4e2d\u3002<\/li>\n\n\n\n<li><strong>\u4f7f\u7528\u5916\u952e\u5728\u5355\u4e2a\u8bed\u53e5\u4e2d\u521b\u5efa\u7236\u8bb0\u5f55\u548c\u5b50\u8bb0\u5f55<\/strong><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f7f\u7528\u5916\u90e8 ID \u5173\u8054\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u4f7f\u7528\u7236\u8bb0\u5f55\u4e0a\u7684\u81ea\u5b9a\u4e49\u5916\u90e8 ID \u5b57\u6bb5\u6dfb\u52a0\u76f8\u5173\u8bb0\u5f55\u3002 \u901a\u8fc7\u5916\u90e8 ID \u5b57\u6bb5\u5173\u8054\u8bb0\u5f55\u662f\u4f7f\u7528\u8bb0\u5f55 ID \u7684\u66ff\u4ee3\u65b9\u6cd5\u3002\u4f60 \u53ea\u6709\u5f53\u5173\u7cfb\uff08\u5982\u4e3b\u4ece-\u7ec6\u8282\u6216 lookup\uff09 \u5df2\u4e3a\u6240\u6d89\u53ca\u7684\u5bf9\u8c61\u5b9a\u4e49\u3002<\/p>\n\n\n\n<p>\u91cd\u8981<\/p>\n\n\n\n<p>\u5728\u53ef\u80fd\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u66f4\u6539\u4e86\u975e\u5305\u5bb9\u6027\u6761\u6b3e\uff0c\u4ee5\u7b26\u5408\u6211\u4eec\u7684 \u5e73\u7b49\u7684\u516c\u53f8\u4ef7\u503c\u89c2\u3002\u6211\u4eec\u4fdd\u7559\u4e86\u67d0\u4e9b\u6761\u6b3e\uff0c\u4ee5\u907f\u514d\u5bf9 \u5ba2\u6237\u5b9e\u65bd\u3002\u6b64\u793a\u4f8b\u5c06\u65b0\u5546\u673a\u4e0e\u73b0\u6709\u5ba2\u6237\u5173\u8054\u3002\u5e10\u6237 sObject \u5177\u6709 \u6807\u8bb0\u4e3a\u5916\u90e8 ID \u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5\u3002\u5546\u673a\u8bb0\u5f55\u4e0e\u5ba2\u6237\u8bb0\u5f55\u76f8\u5173\u8054 \u901a\u8fc7\u81ea\u5b9a\u4e49\u5916\u90e8 ID \u5b57\u6bb5\u3002\u8be5\u793a\u4f8b\u5047\u5b9a\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Account sObject \u5177\u6709\u4e00\u4e2a\u540d\u4e3a&nbsp;MyExtID&nbsp;\u7684\u6587\u672c\u7c7b\u578b\u7684\u5916\u90e8 ID \u5b57\u6bb5<\/li>\n\n\n\n<li>\u5ba2\u6237\u8bb0\u5f55\u5b58\u5728\u4e8e\u4ee5\u4e0b\u4f4d\u7f6e<samp>MyExtID__c = \u2018SAP111111\u2019<\/samp><\/li>\n<\/ul>\n\n\n\n<p>\u5728\u63d2\u5165\u65b0\u5546\u673a\u4e4b\u524d\uff0c\u5ba2\u6237\u8bb0\u5f55\u5c06\u4f5c\u4e3a \u901a\u8fc7&nbsp;Opportunity.Account&nbsp;\u5173\u7cfb\u5b57\u6bb5\u7684 sObject\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Opportunity newOpportunity = new Opportunity(\n    Name='OpportunityWithAccountInsert',\n    StageName='Prospecting',\n    CloseDate=Date.today().addDays(7));\n\n\/\/ Create the parent record reference.\n\/\/ An account with external ID = 'SAP111111' already exists.\n\/\/ This sObject is used only for foreign key reference\n\/\/ and doesn't contain any other fields.\nAccount accountReference = new Account(\n    MyExtID__c='SAP111111');                \n\n\/\/ Add the account sObject to the opportunity.\nnewOpportunity.Account = accountReference;\n\n\/\/ Create the opportunity.\nDatabase.SaveResult results = Database.insert(newOpportunity);<\/code><\/pre>\n\n\n\n<p>\u524d\u9762\u7684\u793a\u4f8b\u6267\u884c\u63d2\u5165\u64cd\u4f5c\uff0c\u4f46\u60a8\u4e5f\u53ef\u4ee5\u901a\u8fc7 \u6267\u884c\u66f4\u65b0\u6216\u66f4\u65b0\u63d2\u5165\u65f6\u7684\u5916\u90e8 ID \u5b57\u6bb5\u3002\u5982\u679c\u7236\u8bb0\u5f55\u4e0d\u5b58\u5728\uff0c\u5219 \u53ef\u4ee5\u4f7f\u7528\u5355\u72ec\u7684 DML \u8bed\u53e5\u6216\u4f7f\u7528\u76f8\u540c\u7684 DML \u8bed\u53e5\u521b\u5efa\u5b83\uff0c\u5982\u4f7f\u7528\u5916\u952e\u5728\u5355\u4e2a\u8bed\u53e5\u4e2d\u521b\u5efa\u7236\u8bb0\u5f55\u548c\u5b50\u8bb0\u5f55\u4e2d\u6240\u793a\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u5728\u5355\u4e2a\u8bed\u53e5\u4e2d\u4f7f\u7528 \u5916\u952e<\/h1>\n\n\n\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528\u5916\u90e8 ID \u5b57\u6bb5\u4f5c\u4e3a\u5916\u952e\u6765\u521b\u5efa\u7236\u8bb0\u5f55\u548c\u5b50\u8bb0\u5f55 \u5728\u5355\u4e2a\u6b65\u9aa4\u4e2d\u6267\u884c\u4e0d\u540c\u7684 sObject \u7c7b\u578b\uff0c\u800c\u4e0d\u662f\u521b\u5efa\u7236\u8bb0\u5f55 \u9996\u5148\uff0c\u67e5\u8be2\u5176 ID\uff0c\u7136\u540e\u521b\u5efa\u5b50\u8bb0\u5f55\u3002\u4e3a\u6b64\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u5b50 sObject \u5e76\u586b\u5145\u5176\u5fc5\u586b\u5b57\u6bb5\uff0c\u5e76\u6839\u636e\u9700\u8981 \u5176\u4ed6\u9886\u57df\u3002<\/li>\n\n\n\n<li>\u521b\u5efa\u4ec5\u7528\u4e8e\u8bbe\u7f6e\u7236\u5916\u90e8\u7684\u7236\u5f15\u7528 sObject \u5b50 sObject \u4e0a\u7684\u952e\u5f15\u7528\u3002\u6b64 sObject \u53ea\u6709\u5916\u90e8 ID \u5df2\u5b9a\u4e49\u5b57\u6bb5\uff0c\u672a\u8bbe\u7f6e\u5176\u4ed6\u5b57\u6bb5\u3002<\/li>\n\n\n\n<li>\u5c06\u5b50 sObject \u7684\u5916\u952e\u5b57\u6bb5\u8bbe\u7f6e\u4e3a\u7236\u5f15\u7528 s\u60a8\u521a\u521a\u521b\u5efa\u7684\u5bf9\u8c61\u3002<\/li>\n\n\n\n<li>\u521b\u5efa\u53e6\u4e00\u4e2a\u8981\u4f20\u9012\u7ed9\u8bed\u53e5\u7684\u7236 sObject\u3002\u6b64 sObject \u5fc5\u987b\u5177\u6709 \u9664\u4e86 \u5916\u90e8 ID \u5b57\u6bb5\u3002<samp>insert<\/samp><\/li>\n\n\n\n<li>\u901a\u8fc7\u5411\u5b83\u4f20\u9012\u4e00\u4e2a\u6570\u7ec4\u6765\u8c03\u7528 \u8981\u521b\u5efa\u7684 sObjects\u3002\u7236 sObject \u5fc5\u987b\u4f4d\u4e8e \u6570\u7ec4\uff0c\u5373\u7236\u6570\u7ec4\u7684\u6570\u7ec4\u7d22\u5f15\u5fc5\u987b\u4f4e\u4e8e \u513f\u7ae5\u7d22\u5f15\u3002<samp>insert<\/samp><\/li>\n<\/ul>\n\n\n\n<p>\u60a8\u53ef\u4ee5\u521b\u5efa\u6700\u591a 10 \u7ea7\u7684\u76f8\u5173\u8bb0\u5f55\u3002\u6b64\u5916\uff0c\u76f8\u5173\u7684 \u5728\u5355\u4e2a\u8c03\u7528\u4e2d\u521b\u5efa\u7684\u8bb0\u5f55\u5fc5\u987b\u5177\u6709\u4e0d\u540c\u7684 sObject \u7c7b\u578b\u3002\u67e5\u770b\u66f4\u591a \u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4e3a\u4e0d\u540c\u5bf9\u8c61\u521b\u5efa\u8bb0\u5f55\u00a0SOAP API \u5f00\u53d1\u4eba\u5458\u6307\u5357\u4e2d\u7684\u7c7b\u578b\u3002\u4ee5\u4e0b\u793a\u4f8b\u8bf4\u660e\u5982\u4f55\u4f7f\u7528\u7236\u5e10\u6237\u521b\u5efa\u5546\u673a \u540c\u6837\u7684\u9648\u8ff0\u3002\u793a\u4f8b \u521b\u5efa\u4e00\u4e2a Opportunity sObject \u5e76\u586b\u5145\u5176\u4e2d\u7684\u4e00\u4e9b\u5b57\u6bb5\uff0c\u7136\u540e\u521b\u5efa\u4e24\u4e2a Account \u5bf9\u8c61\u3002\u7b2c\u4e00\u4e2a\u5e10\u6237\u4ec5\u7528\u4e8e\u5916\u952e\u5173\u7cfb\uff0c\u800c \u7b2c\u4e8c\u4e2a\u662f\u7528\u4e8e\u5e10\u6237\u521b\u5efa\uff0c\u5e76\u8bbe\u7f6e\u4e86\u5e10\u6237\u5b57\u6bb5\u3002\u4e24\u4e2a\u5e10\u6237 \u8bbe\u7f6e\u5916\u90e8 ID \u5b57\u6bb5 \u3002 \u63a5\u4e0b\u6765\uff0c\u793a\u4f8b\u8c03\u7528 \u5411\u5b83\u4f20\u9012\u4e00\u4e2a sObject \u6570\u7ec4\u3002\u6570\u7ec4\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u662f\u7236\u5143\u7d20 sObject\uff0c\u7b2c\u4e8c\u4e2a\u662f\u673a\u4f1a sObject\u3002\u8be5\u8bed\u53e5\u521b\u5efa Opportunity \u53ca\u5176\u7236\u5e10\u6237\u53ea\u9700\u4e00\u6b65\u5373\u53ef\u5b8c\u6210\u3002\u6700\u540e\uff0c\u8be5\u793a\u4f8b\u68c0\u67e5 \u7ed3\u679c\uff0c\u5e76\u5c06\u6240\u521b\u5efa\u8bb0\u5f55\u7684 ID \u5199\u5165\u8c03\u8bd5\u65e5\u5fd7\uff0c\u6216\u7b2c\u4e00\u4e2a \u5982\u679c\u8bb0\u5f55\u521b\u5efa\u5931\u8d25\uff0c\u5219\u51fa\u9519\u3002\u6b64\u793a\u4f8b\u9700\u8981 \u8c03\u7528\u7684\u5e10\u6237 MyExtID\u3002<\/p>\n\n\n\n<p><samp>insert<\/samp><samp>MyExtID__c<\/samp><samp>Database.insert<\/samp><samp>Database.insert<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class ParentChildSample {\n    public static void InsertParentChild() {\n        Date dt = Date.today();\n        dt = dt.addDays(7);\n        Opportunity newOpportunity = new Opportunity(\n            Name='OpportunityWithAccountInsert',\n            StageName='Prospecting',\n            CloseDate=dt);\n        \n        \/\/ Create the parent reference.\n        \/\/ Used only for foreign key reference\n        \/\/ and doesn't contain any other fields.\n        Account accountReference = new Account(\n            MyExtID__c='SAP111111');                \n        newOpportunity.Account = accountReference;\n        \n        \/\/ Create the Account object to insert.\n        \/\/ Same as above but has Name field.\n        \/\/ Used for the insert.\n        Account parentAccount = new Account(\n            Name='Hallie',\n            MyExtID__c='SAP111111');      \n        \n        \/\/ Create the account and the opportunity.\n        Database.SaveResult&#91;] results = Database.insert(new SObject&#91;] {\n            parentAccount, newOpportunity });\n        \n        \/\/ Check results.\n        for (Integer i = 0; i &lt; results.size(); i++) {\n            if (results&#91;i].isSuccess()) {\n            System.debug('Successfully created ID: '\n                  + results&#91;i].getId());\n            } else {\n            System.debug('Error: could not create sobject '\n                  + 'for array element ' + i + '.');\n            System.debug('   The error reported was: '\n                  + results&#91;i].getErrors()&#91;0].getMessage() + '\\n');\n            }\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Upserting \u63d0\u5355\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u4f7f\u7528\u8be5\u64cd\u4f5c\uff0c\u60a8\u53ef\u4ee5 \u5728\u4e00\u6b21\u901a\u8bdd\u4e2d\u63d2\u5165\u6216\u66f4\u65b0\u73b0\u6709\u8bb0\u5f55\u3002\u786e\u5b9a\u8bb0\u5f55\u662f\u5426\u5df2 \u5b58\u5728\u3001\u8bed\u53e5\u6216 Database \u65b9\u6cd5 \u4f7f\u7528\u8bb0\u5f55\u7684 ID \u4f5c\u4e3a\u952e\u6765\u5339\u914d\u8bb0\u5f55\u3001\u81ea\u5b9a\u4e49\u5916\u90e8 ID \u5b57\u6bb5\u6216&nbsp;idLookup&nbsp;\u5c5e\u6027\u8bbe\u7f6e\u4e3a true \u7684\u6807\u51c6\u5b57\u6bb5\u3002<\/p>\n\n\n\n<p><samp>upsert<\/samp><samp>upsert<\/samp><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u952e\u4e0d\u5339\u914d\uff0c\u5219\u521b\u5efa\u65b0\u7684\u5bf9\u8c61\u8bb0\u5f55\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u952e\u5339\u914d\u4e00\u6b21\uff0c\u5219\u66f4\u65b0\u73b0\u6709\u5bf9\u8c61\u8bb0\u5f55\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u952e\u591a\u6b21\u5339\u914d\uff0c\u5219\u4f1a\u751f\u6210\u9519\u8bef\u548c\u5bf9\u8c61 \u8bb0\u5f55\u65e2\u4e0d\u4f1a\u63d2\u5165\u4e5f\u4e0d\u4f1a\u66f4\u65b0\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u4ec5\u5f53\u81ea\u5b9a\u4e49\u5b57\u6bb5\u5177\u6709<strong>\u552f\u4e00<\/strong>\u4e14<strong>\u5c06\u201cABC\u201d\u548c\u201cabc\u201d\u89c6\u4e3a\u91cd\u590d\u65f6\uff0c\u81ea\u5b9a\u4e49\u5b57\u6bb5\u5339\u914d\u624d\u4e0d\u533a\u5206\u5927\u5c0f\u5199 \u503c\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09<\/strong>\u5c5e\u6027\u88ab\u9009\u4e3a\u5b57\u6bb5\u7684\u4e00\u90e8\u5206 \u5b9a\u4e49\u3002\u5982\u679c\u662f\u8fd9\u79cd\u60c5\u51b5\uff0c\u5219\u201cABC123\u201d\u4e0e \u201cabc123\u3002\u201d\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u521b\u5efa \u81ea\u5b9a\u4e49\u5b57\u6bb5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b\u5b50<\/h2>\n\n\n\n<p>\u4ee5\u4e0b\u793a\u4f8b\u66f4\u65b0\u4f4d\u4e8e \u57ce\u5e02\u4ee5\u524d\u79f0\u4e3a\u5b5f\u4e70\uff0c\u5e76\u4e14\u8fd8\u63d2\u5165\u4e86\u4e00\u4e2a\u4f4d\u4e8e San \u7684\u65b0\u5e10\u6237 \u5f17\u6717\u897f\u65af\u79d1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account&#91;] acctsList = &#91;SELECT Id, Name, BillingCity\n                        FROM Account WHERE BillingCity = 'Bombay'];\nfor (Account a : acctsList) {\n    a.BillingCity = 'Mumbai';\n}\nAccount newAcct = new Account(Name = 'Acme', BillingCity = 'San Francisco');\nacctsList.add(newAcct);\ntry {\n    upsert acctsList;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u6709\u5173\u5904\u7406\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u6279\u91cf DML \u5f02\u5e38\u5904\u7406\u3002<samp>DmlException<\/samp><\/p>\n\n\n\n<p>\u4e0b\u4e00\u4e2a\u793a\u4f8b\u4f7f\u7528\u8be5\u65b9\u6cd5\u66f4\u65b0\u63d2\u5165\u4f20\u5165\u7684\u6f5c\u5728\u987e\u5ba2\u96c6\u5408\u3002\u6b64\u793a\u4f8b\u5141\u8bb8 \u8bb0\u5f55\u7684\u90e8\u5206\u5904\u7406\uff0c\u5373\u5982\u679c\u67d0\u4e9b\u8bb0\u5f55\u5904\u7406\u5931\u8d25\uff0c \u5176\u4f59\u8bb0\u5f55\u4ecd\u4f1a\u63d2\u5165\u6216\u66f4\u65b0\u3002\u5b83\u904d\u5386\u7ed3\u679c\u548c \u5c06\u65b0\u4efb\u52a1\u6dfb\u52a0\u5230\u5df2\u6210\u529f\u5904\u7406\u7684\u6bcf\u6761\u8bb0\u5f55\u4e2d\u3002\u4efb\u52a1 sObjects \u662f \u4fdd\u5b58\u5728\u5217\u8868\u4e2d\uff0c\u7136\u540e\u6279\u91cf\u63d2\u5165\u3002\u6b64\u793a\u4f8b\u540e\u9762\u8ddf\u7740\u4e00\u4e2a\u6d4b\u8bd5\u7c7b \u5176\u4e2d\u5305\u542b\u7528\u4e8e\u6d4b\u8bd5\u793a\u4f8b\u7684\u6d4b\u8bd5\u65b9\u6cd5\u3002<samp>Database.upsert<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* This class demonstrates and tests the use of the\n * partial processing DML operations *\/ \n\npublic class DmlSamples {\n\n   \/* This method accepts a collection of lead records and \n      creates a task for the owner(s) of any leads that were \n      created as new, that is, not updated as a result of the upsert\n      operation *\/\n   public static List&lt;Database.upsertResult&gt; upsertLeads(List&lt;Lead&gt; leads)  {\n\n      \/* Perform the upsert. In this case the unique identifier for the\n         insert or update decision is the Salesforce record ID. If the \n         record ID is null the row will be inserted, otherwise an update\n         will be attempted. *\/\n      List&lt;Database.upsertResult&gt; uResults = Database.upsert(leads,false);\n\n      \/* This is the list for new tasks that will be inserted when new \n         leads are created. *\/\n      List&lt;Task&gt; tasks = new List&lt;Task&gt;();\n      for(Database.upsertResult result:uResults) {\n         if (result.isSuccess() &amp;&amp; result.isCreated()) \n              tasks.add(new Task(Subject = 'Follow-up', WhoId = result.getId()));\n      }\n\n      \/* If there are tasks to be inserted, insert them *\/\n      Database.insert(tasks);\n\n      return uResults;\n   }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>@isTest\nprivate class DmlSamplesTest {\n   public static testMethod void testUpsertLeads() {\n        \/* We only need to test the insert side of upsert *\/\n      List&lt;Lead&gt; leads = new List&lt;Lead&gt;();\n\n      \/* Create a set of leads for testing *\/\n      for(Integer i = 0;i &lt; 100; i++) {\n         leads.add(new Lead(LastName = 'testLead', Company = 'testCompany'));\n      }\n\n      \/* Switch to the runtime limit context *\/\n      Test.startTest();\n\n      \/* Exercise the method *\/\n      List&lt;Database.upsertResult&gt; results = DmlSamples.upsertLeads(leads);\n\n      \/* Switch back to the test context for limits *\/\n      Test.stopTest();\n\n      \/* ID set for asserting the tasks were created as expected *\/\n      Set&lt;Id&gt; ids = new Set&lt;Id&gt;();\n\n      \/* Iterate over the results, asserting success and adding the new ID\n         to the set for use in the comprehensive assertion phase below. *\/\n      for(Database.upsertResult result:results) {\n         System.assert(result.isSuccess());\n         ids.add(result.getId());\n      }\n\n      \/* Assert that exactly one task exists for each lead that was inserted. *\/\n      for(Lead l:&#91;SELECT Id, (SELECT Subject FROM Tasks) FROM Lead WHERE Id IN :ids]) {\n         System.assertEquals(1,l.tasks.size());\n      }\n   }\n}<\/code><\/pre>\n\n\n\n<p>\u4f7f\u7528\u5916\u90e8 ID \u53ef\u4ee5\u51cf\u5c11 \u4ee3\u7801\u4e2d DML \u8bed\u53e5\u7684\u6570\u91cf\uff0c\u5e76\u5e2e\u52a9\u60a8\u907f\u514d\u8fbe\u5230\u8c03\u63a7\u5668\u9650\u5236 \uff08\u89c1\u6267\u884c \u8c03\u901f\u5668\u548c\u9650\u5236\uff09\u3002\u4e0b\u4e00\u4e2a\u793a\u4f8b\u4f7f\u7528 Asset \u5bf9\u8c61\u4e0a\u7684\u5916\u90e8 ID \u5b57\u6bb5\u6765\u7ef4\u62a4\u4e00\u5bf9\u4e00\u5173\u7cfb \u5728\u8d44\u4ea7\u548c\u5546\u673a\u660e\u7ec6\u9879\u4e4b\u95f4\u3002<samp>upsertupsertLine_Item_Id__c<\/samp><\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u5728\u8fd0\u884c\u6b64\u793a\u4f8b\u4e4b\u524d\uff0c\u8bf7\u5728\u540d\u4e3a Asset \u5bf9\u8c61\u7684\u5bf9\u8c61\u4e0a\u521b\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49\u6587\u672c\u5b57\u6bb5\uff0c\u5e76\u5c06\u5176\u6807\u8bb0\u4e3a\u5916\u90e8 \u540c\u4e0a\u3002\u6709\u5173\u81ea\u5b9a\u4e49\u5b57\u6bb5\u7684\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 Salesforce \u8054\u673a\u5e2e\u52a9\u3002<samp>Line_Item_Id__c<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void upsertExample() {\n    Opportunity opp = &#91;SELECT Id, Name, AccountId, \n                              (SELECT Id, PricebookEntry.Product2Id, PricebookEntry.Name \n                               FROM OpportunityLineItems)\n                       FROM Opportunity \n                       WHERE HasOpportunityLineItem = true \n                       LIMIT 1]; \n\n    Asset&#91;] assets = new Asset&#91;]{}; \n\n    \/\/ Create an asset for each line item on the opportunity\n    for (OpportunityLineItem lineItem:opp.OpportunityLineItems) {\n\n        \/\/This code populates the line item Id, AccountId, and Product2Id for each asset\n        Asset asset = new Asset(Name = lineItem.PricebookEntry.Name,\n                                Line_Item_ID__c = lineItem.Id,\n                                AccountId = opp.AccountId,\n                                Product2Id = lineItem.PricebookEntry.Product2Id);\n\n        assets.add(asset);\n    }\n \n    try {\n        upsert assets Line_Item_ID__c;  \/\/ This line upserts the assets list with\n                                        \/\/ the Line_Item_Id__c field specified as the \n                                        \/\/ Asset field that should be used for matching\n                                        \/\/ the record that should be upserted. \n    } catch (DmlException e) {\n        System.debug(e.getMessage());\n    }\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u5408\u5e76\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u5f53\u60a8\u5728 \u6570\u636e\u5e93\uff0c\u6e05\u7406\u6570\u636e\u5e76\u5408\u5e76\u8bb0\u5f55\u53ef\u80fd\u4f1a \u662f\u4e2a\u597d\u4e3b\u610f\u3002\u60a8\u6700\u591a\u53ef\u4ee5\u5408\u5e76\u540c\u4e00 sObject \u7684\u4e09\u6761\u8bb0\u5f55 \u7c7b\u578b\u3002\u64cd\u4f5c \u6700\u591a\u5c06\u4e09\u6761\u8bb0\u5f55\u5408\u5e76\u5230\u5176\u4e2d\u4e00\u6761\u8bb0\u5f55\u4e2d\uff0c\u5220\u9664\u5176\u4ed6\u8bb0\u5f55\uff0c \u5e76\u91cd\u65b0\u5904\u7406\u4efb\u4f55\u76f8\u5173\u8bb0\u5f55\u3002<samp>merge<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b<\/h2>\n\n\n\n<p>\u4e0b\u9762\u6f14\u793a\u5982\u4f55 \u5c06\u73b0\u6709\u5ba2\u6237\u8bb0\u5f55\u5408\u5e76\u5230\u4e3b\u8d26\u6237\u4e2d\u3002\u5e10\u6237 \u8981\u5408\u5e76\uff0c\u5219\u5177\u6709\u76f8\u5173\u8054\u7cfb\u4eba\uff0c\u8be5\u8054\u7cfb\u4eba\u5c06\u79fb\u81f3\u4e3b\u5e10\u6237 \u5408\u5e76\u64cd\u4f5c\u540e\u7684\u8bb0\u5f55\u3002\u6b64\u5916\uff0c\u5408\u5e76\u540e\uff0c\u5408\u5e76\u8bb0\u5f55 \u88ab\u5220\u9664\uff0c\u6570\u636e\u5e93\u4e2d\u4ec5\u4fdd\u7559\u4e00\u6761\u8bb0\u5f55\u3002\u8fd9\u4e2a\u4f8b\u5b50 \u9996\u5148\u521b\u5efa\u4e00\u4e2a\u5305\u542b\u4e24\u4e2a\u5e10\u6237\u7684\u5217\u8868\uff0c\u7136\u540e\u63d2\u5165\u8be5\u5217\u8868\u3002\u7136\u540e \u5b83\u6267\u884c\u67e5\u8be2\u4ee5\u4ece\u6570\u636e\u5e93\u4e2d\u83b7\u53d6\u65b0\u7684\u5ba2\u6237\u8bb0\u5f55\uff0c \u5e76\u5c06\u8054\u7cfb\u4eba\u6dfb\u52a0\u5230\u8981\u5408\u5e76\u7684\u5ba2\u6237\u4e2d\u3002\u63a5\u4e0b\u6765\uff0c\u5b83\u5408\u5e76 \u4e24\u4e2a\u5e10\u6237\u3002\u6700\u540e\uff0c\u5b83\u9a8c\u8bc1\u8054\u7cfb\u4eba\u662f\u5426\u5df2\u79fb\u52a8 \u5230\u4e3b\u8d26\u6237\uff0c\u7b2c\u4e8c\u4e2a\u8d26\u6237\u5df2\u88ab\u5220\u9664\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Insert new accounts\nList&lt;Account&gt; ls = new List&lt;Account&gt;{\n    new Account(name='Acme Inc.'),\n        new Account(name='Acme')\n        };                                        \ninsert ls;\n\n\/\/ Queries to get the inserted accounts \nAccount masterAcct = &#91;SELECT Id, Name FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];\nAccount mergeAcct = &#91;SELECT Id, Name FROM Account WHERE Name = 'Acme' LIMIT 1];\n\n\/\/ Add a contact to the account to be merged\nContact c = new Contact(FirstName='Joe',LastName='Merged');\nc.AccountId = mergeAcct.Id;\ninsert c;\n\ntry {\n    merge masterAcct mergeAcct;\n} catch (DmlException e) {\n    \/\/ Process exception\n    System.debug('An unexpected error has occurred: ' + e.getMessage()); \n}\n\n\/\/ Once the account is merged with the master account,\n\/\/ the related contact should be moved to the master record.\nmasterAcct = &#91;SELECT Id, Name, (SELECT FirstName,LastName From Contacts) \n              FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];\nSystem.assert(masterAcct.getSObjects('Contacts').size() &gt; 0);\nSystem.assertEquals('Joe', masterAcct.getSObjects('Contacts')&#91;0].get('FirstName'));\nSystem.assertEquals('Merged', masterAcct.getSObjects('Contacts')&#91;0].get('LastName'));\n\n\/\/ Verify that the merge record got deleted\nAccount&#91;] result = &#91;SELECT Id, Name FROM Account WHERE Id=:mergeAcct.Id];\nSystem.assertEquals(0, result.size());<\/code><\/pre>\n\n\n\n<p>\u7b2c\u4e8c\u4e2a\u4f8b\u5b50 \u4e0e\u524d\u4e00\u4e2a\u7c7b\u4f3c\uff0c\u53ea\u662f\u5b83\u4f7f\u7528\u65b9\u6cd5\uff08\u800c\u4e0d\u662f \u58f0\u660e\uff09\u3002\u8fd9 \u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u8bbe\u7f6e\u4e3a \u6b64\u64cd\u4f5c\u4e2d\u9047\u5230\u7684\u4efb\u4f55\u9519\u8bef\u90fd\u4f1a\u5728\u5408\u5e76\u7ed3\u679c\u4e2d\u8fd4\u56de \u800c\u4e0d\u662f\u83b7\u5f97\u5f02\u5e38\u3002\u8be5\u793a\u4f8b\u5c06\u4e24\u4e2a\u5e10\u6237\u5408\u5e76\u5230 \u4e3b\u5e10\u6237\u5e76\u68c0\u7d22\u8fd4\u56de\u7684\u7ed3\u679c\u3002\u793a\u4f8b \u521b\u5efa\u4e00\u4e2a\u4e3b\u5e10\u6237\u548c\u4e24\u4e2a\u526f\u672c\uff0c\u5176\u4e2d\u4e00\u4e2a\u5177\u6709\u5b50\u5e10\u6237 \u8054\u7cfb\u3002\u5b83\u9a8c\u8bc1\u5728\u5408\u5e76\u540e\u8054\u7cfb\u4eba\u662f\u5426\u79fb\u52a8\u5230 \u4e3b\u5e10\u6237\u3002<samp>Database.merge<\/samp><samp>merge<\/samp><samp>Database.merge<\/samp><samp>false<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Create master account\nAccount master = new Account(Name='Account1');\ninsert master;\n\n\/\/ Create duplicate accounts\nAccount&#91;] duplicates = new Account&#91;]{\n    \/\/ Duplicate account \n    new Account(Name='Account1, Inc.'),\n    \/\/ Second duplicate account\n    new Account(Name='Account 1')\n};\ninsert duplicates;\n\n\/\/ Create child contact and associate it with first account\nContact c = new Contact(firstname='Joe',lastname='Smith', accountId=duplicates&#91;0].Id);\ninsert c;\n\n\n\n\/\/ Get the account contact relation ID, which is created when a contact is created on \"Account1, Inc.\" \nAccountContactRelation resultAcrel = &#91;SELECT Id FROM AccountContactRelation WHERE ContactId=:c.Id LIMIT 1];\n\n\n\/\/ Merge accounts into master\nDatabase.MergeResult&#91;] results = Database.merge(master, duplicates, false);\n\nfor(Database.MergeResult res : results) {\n    if (res.isSuccess()) {\n        \/\/ Get the master ID from the result and validate it\n        System.debug('Master record ID: ' + res.getId());\n        System.assertEquals(master.Id, res.getId());              \n        \n        \/\/ Get the IDs of the merged records and display them\n        List&lt;Id&gt; mergedIds = res.getMergedRecordIds();\n        System.debug('IDs of merged records: ' + mergedIds);                \n        \n        \/\/ Get the ID of the reparented record and \n        \/\/ validate that this the contact ID.\n        System.debug('Reparented record ID: ' + res.getUpdatedRelatedIds());\n\n\t \/\/ Make sure there are two IDs (contact ID and account contact relation ID); the order isn't defined\n        System.assertEquals(2, res.getUpdatedRelatedIds().size() );    \n        boolean flag1 = false;\n\tboolean flag2 = false;\n\n\n    \t\/\/ Because the order of the IDs isn't defined, the ID can be at index 0 or 1 of the array\t     \n        if (resultAcrel.id == res.getUpdatedRelatedIds()&#91;0] || resultAcrel.id == res.getUpdatedRelatedIds()&#91;1] )\n            \tflag1 = true;\n        \n       if (c.id == res.getUpdatedRelatedIds()&#91;0] || c.id == res.getUpdatedRelatedIds()&#91;1] )\n            flag2 = true;\n            \n        System.assertEquals(flag1, true); \n        System.assertEquals(flag2, true);  \n            \n    }\n    else {\n        for(Database.Error err : res.getErrors()) {\n            \/\/ Write each error to the debug output\n            System.debug(err.getMessage());\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5408\u5e76\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<p>\u5408\u5e76 sObject \u65f6 \u8bb0\u5f55\u4e2d\uff0c\u8bf7\u8003\u8651\u4ee5\u4e0b\u89c4\u5219\u548c\u51c6\u5219\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53ea\u80fd\u5408\u5e76\u6f5c\u5728\u987e\u5ba2\u3001\u8054\u7cfb\u4eba\u3001\u6848\u4f8b\u548c\u5ba2\u6237\u3002\u8bf7\u53c2\u9605\u4e0d\u652f\u6301 DML \u64cd\u4f5c\u7684 sObject\u3002<\/li>\n\n\n\n<li>\u60a8\u53ef\u4ee5\u4f20\u9012\u4e00\u4e2a\u4e3b\u8bb0\u5f55\u548c\u6700\u591a\u4e24\u4e2a\u9644\u52a0\u7684 sObject \u8bb0\u5f55\u5230\u5355\u4e2a\u65b9\u6cd5\u3002<samp>merge<\/samp><\/li>\n\n\n\n<li>\u4f7f\u7528 Apex \u5408\u5e76\u64cd\u4f5c\u65f6\uff0c\u4e3b\u8bb0\u5f55\u4e0a\u7684\u5b57\u6bb5\u503c\u59cb\u7ec8\u53d6\u4ee3 \u8981\u5408\u5e76\u7684\u8bb0\u5f55\u4e0a\u7684\u76f8\u5e94\u5b57\u6bb5\u503c\u3002\u8981\u4fdd\u7559\u5408\u5e76\u7684 \u8bb0\u5f55\u5b57\u6bb5\u503c\uff0c\u53ea\u9700\u5728\u4e3b sObject \u4e0a\u8bbe\u7f6e\u6b64\u5b57\u6bb5\u503c\u5373\u53ef \u6267\u884c\u5408\u5e76\u3002<\/li>\n\n\n\n<li>\u5916\u90e8 ID \u5b57\u6bb5\u4e0d\u80fd\u4e0e \u4e00\u8d77\u4f7f\u7528\u3002<samp>merge<\/samp><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u5220\u9664\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u5728\u6570\u636e\u5e93\u4e2d\u4fdd\u7559\u8bb0\u5f55\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528\u8be5\u64cd\u4f5c\u5220\u9664\u8fd9\u4e9b\u8bb0\u5f55\u3002\u5df2\u5220\u9664\u7684\u8bb0\u5f55\u4e0d\u4f1a\u88ab\u5220\u9664 \u6c38\u4e45\u6765\u81ea Salesforce\uff0c\u4f46\u5b83\u4eec\u5c06\u88ab\u653e\u7f6e\u5728\u56de\u6536\u7ad9\u4e2d 15 \u5929\uff0c\u4ece \u5b83\u4eec\u53ef\u4ee5\u6062\u590d\u7684\u5730\u65b9\u3002\u6062\u590d\u5df2\u5220\u9664\u7684\u8bb0\u5f55\u5c06\u5728\u540e\u9762\u7684\u90e8\u5206\u4e2d\u4ecb\u7ecd\u3002<samp>delete<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b<\/h2>\n\n\n\n<p>\u4ee5\u4e0b\u793a\u4f8b\u5220\u9664\u540d\u4e3a\u201cDotCom\u201d\u7684\u6240\u6709\u5e10\u6237\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account&#91;] doomedAccts = &#91;SELECT Id, Name FROM Account \n                         WHERE Name = 'DotCom']; \ntry {\n    delete doomedAccts;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u6709\u5173\u5904\u7406\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u6279\u91cf DML \u5f02\u5e38\u5904\u7406\u3002<samp>DmlException<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u53c2\u8003 \u5220\u9664\u548c\u8fd8\u539f\u8bb0\u5f55\u65f6\u7684\u5b8c\u6574\u6027<\/h2>\n\n\n\n<p>\u8be5\u64cd\u4f5c\u652f\u6301\u7ea7\u8054\u5220\u9664\u3002\u5982\u679c \u5220\u9664\u7236\u5bf9\u8c61\u65f6\uff0c\u4f1a\u81ea\u52a8\u5220\u9664\u5176\u5b50\u5bf9\u8c61\uff0c\u53ea\u8981\u6bcf\u4e2a\u5b50\u5bf9\u8c61 \u53ef\u4ee5\u5220\u9664\u8bb0\u5f55\u3002<\/p>\n\n\n\n<p><samp>delete<\/samp><\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u60a8\u5220\u9664\u6848\u4f8b\u8bb0\u5f55\uff0c\u5219 Apex \u4f1a\u81ea\u52a8 \u5220\u9664\u4e0e\u4e4b\u5173\u8054\u7684\u4efb\u4f55 CaseComment\u3001CaseHistory \u548c CaseSolution \u8bb0\u5f55 \u7bb1\u3002\u4f46\u662f\uff0c\u5982\u679c\u7279\u5b9a\u5b50\u8bb0\u5f55\u4e0d\u53ef\u5220\u9664\u6216\u5f53\u524d\u6b63\u5728\u5220\u9664 used\uff0c\u5219\u5bf9 \u7236\u6848\u4f8b\u8bb0\u5f55\u5931\u8d25\u3002<samp>delete<\/samp>\u8be5\u64cd\u4f5c\u8fd8\u539f\u4ee5\u4e0b\u7c7b\u578b\u5173\u7cfb\u7684\u8bb0\u5f55\u5173\u8054\uff1a<\/p>\n\n\n\n<p><samp>undelete<\/samp><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7236\u5e10\u6237\uff08\u5982\u201c\u7236\u5e10\u6237\u201d\u5b57\u6bb5\u4e2d\u6307\u5b9a\uff09 \u5728\u5e10\u6237\u4e0a\uff09<\/li>\n\n\n\n<li>\u95f4\u63a5\u5ba2\u6237\u8054\u7cfb\u4eba\u5173\u7cfb\uff08\u5982\u201c\u76f8\u5173\u5ba2\u6237\u201d\u4e2d\u6307\u5b9a\uff09 \u8054\u7cfb\u4eba\u4e0a\u7684\u76f8\u5173\u5217\u8868\u6216\u8054\u7cfb\u4eba\u4e0a\u7684\u76f8\u5173\u8054\u7cfb\u4eba\u76f8\u5173\u5217\u8868 \u5e10\u6237\uff09<\/li>\n\n\n\n<li>\u7236\u6848\u4f8b\uff08\u5982&nbsp;\u6848\u4f8b\uff09<\/li>\n\n\n\n<li>\u5df2\u7ffb\u8bd1\u89e3\u51b3\u65b9\u6848\u7684\u4e3b\u89e3\u51b3\u65b9\u6848\uff08\u5982\u4e3b\u89e3\u51b3\u65b9\u6848\u4e2d\u6307\u5b9a\u7684\u90a3\u6837\uff09&nbsp;\u89e3\u51b3\u65b9\u6848\u4e0a\u7684\u89e3\u51b3\u65b9\u6848\u5b57\u6bb5\uff09<\/li>\n\n\n\n<li>\u8054\u7cfb\u4eba\u7684\u7ecf\u7406\uff08\u5982\u201c\u62a5\u544a\u5bf9\u8c61\u201d\u5b57\u6bb5\u4e2d\u6307\u5b9a\uff09 \u5728\u8054\u7cfb\u4eba\u4e0a\uff09<\/li>\n\n\n\n<li>\u4e0e\u8d44\u4ea7\u76f8\u5173\u7684\u4ea7\u54c1\uff08\u5728\u8d44\u4ea7\u7684\u201c\u4ea7\u54c1\u201d\u5b57\u6bb5\u4e2d\u6307\u5b9a\uff09<\/li>\n\n\n\n<li>\u4e0e\u62a5\u4ef7\u5355\u76f8\u5173\u7684\u5546\u673a\uff08\u5728\u62a5\u4ef7\u5355\u7684&nbsp;Opportunity&nbsp;\u5b57\u6bb5\u4e2d\u6307\u5b9a\uff09<\/li>\n\n\n\n<li>\u6240\u6709\u81ea\u5b9a\u4e49\u67e5\u627e\u5173\u7cfb<\/li>\n\n\n\n<li>\u5e10\u6237\u548c\u5173\u7cfb\u7ec4\u4e0a\u7684\u5173\u7cfb\u7ec4\u6210\u5458\uff0c\u4ee5\u53ca\u4e00\u4e9b \u5f02\u5e38<\/li>\n\n\n\n<li>\u6807\u7b7e<\/li>\n\n\n\n<li>\u6587\u7ae0\u7684\u7c7b\u522b\u3001\u53d1\u5e03\u72b6\u6001\u548c\u4f5c\u4e1a<\/li>\n<\/ul>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>Salesforce\u7684 \u4ec5\u6062\u590d\u5c1a\u672a\u66ff\u6362\u7684\u67e5\u627e\u5173\u7cfb\u3002\u4f8b\u5982\uff0c\u5982\u679c \u5728\u539f\u59cb\u4ea7\u54c1\u8bb0\u5f55\u4e4b\u524d\uff0c\u8d44\u4ea7\u4e0e\u4e0d\u540c\u7684\u4ea7\u54c1\u76f8\u5173 \u5982\u679c\u672a\u5220\u9664\uff0c\u5219\u4e0d\u4f1a\u6062\u590d\u8be5\u8d44\u4ea7-\u4ea7\u54c1\u5173\u7cfb\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u6062\u590d\u5df2\u5220\u9664\u7684\u8bb0\u5f55<\/h1>\n\n\n\n<p>\u5220\u9664\u8bb0\u5f55\u540e\uff0c\u8fd9\u4e9b\u8bb0\u5f55\u5c06\u653e\u7f6e\u5728\u56de\u6536\u7ad9\u4e2d 15 \u5929\uff0c \u4e4b\u540e\uff0c\u5b83\u4eec\u5c06\u88ab\u6c38\u4e45\u5220\u9664\u3002\u5f53\u8bb0\u5f55\u4ecd\u5728\u56de\u6536\u4e2d\u65f6 Bin\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u8be5\u64cd\u4f5c\u6062\u590d\u5b83\u4eec\u3002\u5982\u679c\u60a8\u4e0d\u5c0f\u5fc3\u5220\u9664\u4e86\u67d0\u4e9b\u8981\u4fdd\u7559\u7684\u8bb0\u5f55\uff0c\u8bf7\u8fd8\u539f\u5b83\u4eec \u4ece\u56de\u6536\u7ad9\u3002<samp>undelete<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b<\/h2>\n\n\n\n<p>\u4ee5\u4e0b\u793a\u4f8b\u53d6\u6d88\u5220\u9664\u540d\u4e3a\u201cUniversal Containers\u201d\u7684\u5e10\u6237\u3002\u5173\u952e\u5b57\u67e5\u8be2\u9876\u90e8\u7684\u6240\u6709\u884c \u7ea7\u522b\u548c\u805a\u5408\u5173\u7cfb\uff0c\u5305\u62ec\u5df2\u5220\u9664\u7684\u8bb0\u5f55\u548c\u5b58\u6863\u7684\u8bb0\u5f55 \u6d3b\u52a8\u3002<\/p>\n\n\n\n<p><samp>ALL ROWS<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name='Universal Containers');\ninsert(a);\ninsert(new Contact(LastName='Carter',AccountId=a.Id));\ndelete a;\n\nAccount&#91;] savedAccts = &#91;SELECT Id, Name FROM Account WHERE Name = 'Universal Containers' ALL ROWS]; \ntry {\n    undelete savedAccts;\n} catch (DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u6709\u5173\u5904\u7406\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u6279\u91cf DML \u5f02\u5e38\u5904\u7406\u3002<samp>DmlException<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u53d6\u6d88\u5220\u9664\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<p>\u4f7f\u7528\u8be5\u8bed\u53e5\u65f6\uff0c\u8bf7\u6ce8\u610f\u4ee5\u4e0b\u4e8b\u9879\u3002<\/p>\n\n\n\n<p><samp>undelete<\/samp><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u60a8\u53ef\u4ee5\u53d6\u6d88\u5220\u9664\u56e0\u5408\u5e76\u800c\u5220\u9664\u7684\u8bb0\u5f55\u3002 \u4f46\u662f\uff0c\u5408\u5e76\u4f1a\u91cd\u65b0\u8bbe\u7f6e\u5b50\u5bf9\u8c61\u7684\u7236\u7ea7\uff0c\u800c\u8be5\u91cd\u5c5e\u4e0d\u80fd \u88ab\u64a4\u6d88\u3002<\/li>\n\n\n\n<li>\u6807\u8bc6\u5df2\u5220\u9664\u7684\u8bb0\u5f55\uff0c\u5305\u62ec\u7531\u4e8e \u5408\u5e76\uff0c\u4f7f\u7528\u53c2\u6570 \u66ff\u6362\u4e3a SOQL \u67e5\u8be2\u3002<samp>ALL ROWS<\/samp><\/li>\n\n\n\n<li>\u8bf7\u53c2\u9605\u5220\u9664\u548c\u6062\u590d\u8bb0\u5f55\u65f6\u7684\u53c2\u7167\u5b8c\u6574\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u8f6c\u6362\u6f5c\u5728\u5ba2\u6237<\/h1>\n\n\n\n<p><a><\/a>DML \u64cd\u4f5c \u5c06\u6f5c\u5728\u987e\u5ba2\u8f6c\u6362\u4e3a\u5ba2\u6237\u548c\u8054\u7cfb\u4eba\uff0c\u4ee5\u53ca\uff08\u53ef\u9009\uff09 \u673a\u4f1a\u3002<samp>convertLead<\/samp>&nbsp;<samp>convertLead<\/samp>\u4ec5\u4f5c\u4e3a \u73ed\u7ea7;\u5b83\u4e0d\u80fd\u4f5c\u4e3a DML \u4f7f\u7528 \u9648\u8ff0\u3002<samp>Database<\/samp><\/p>\n\n\n\n<p>\u8f6c\u6362\u6f5c\u5728\u5ba2\u6237\u6d89\u53ca\u4ee5\u4e0b\u57fa\u672c\u6b65\u9aa4\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u60a8\u7684\u5e94\u7528\u7a0b\u5e8f\u786e\u5b9a\u8981\u8f6c\u6362\u7684\u4efb\u4f55\u6f5c\u5728\u987e\u5ba2\u7684 ID\u3002<\/li>\n\n\n\n<li>\uff08\u53ef\u9009\uff09\u5e94\u7528\u7a0b\u5e8f\u786e\u5b9a\u8981\u8fdb\u5165\u7684\u4efb\u4f55\u5e10\u6237\u7684 ID \u5408\u5e76\u6f5c\u5728\u5ba2\u6237\u3002\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u4f7f\u7528 SOQL \u641c\u7d22\u4e0e \u6f5c\u5728\u987e\u5ba2\u540d\u79f0\uff0c\u5982\u4ee5\u4e0b\u793a\u4f8b\u6240\u793a\uff1a<code>SELECT Id, Name FROM Account WHERE Name='CompanyNameOfLeadBeingMerged'<\/code><\/li>\n\n\n\n<li>\uff08\u53ef\u9009\uff09\u5e94\u7528\u7a0b\u5e8f\u5c06\u4e00\u4e2a\u6216\u591a\u4e2a\u8054\u7cfb\u4eba\u7684 ID \u786e\u5b9a\u4e3a \u5408\u5e76\u6f5c\u5728\u5ba2\u6237\u3002\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u4f7f\u7528 SOQL \u641c\u7d22 \u5339\u914d\u4e3b\u8981\u8054\u7cfb\u4eba\u59d3\u540d\uff0c\u5982\u4e0b\u6240\u793a \u4f8b\uff1a<code>SELECT Id, Name FROM Contact WHERE FirstName='FirstName' AND LastName='LastName' AND AccountId = '001...'<\/code><\/li>\n\n\n\n<li>\uff08\u53ef\u9009\uff09\u5e94\u7528\u7a0b\u5e8f\u786e\u5b9a\u662f\u5426\u5e94\u4ece \u7ebf\u7d22\u3002<\/li>\n\n\n\n<li>\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528\u67e5\u8be2 \uff08\uff09 \u6765\u83b7\u53d6\u5df2\u8f6c\u6362\u7684\u6f5c\u5728\u5ba2\u6237 \u5730\u4f4d\u3002<samp>SELECT &#8230; FROM LeadStatus WHERE IsConverted=true<\/samp><\/li>\n\n\n\n<li>\u5e94\u7528\u7a0b\u5e8f\u8c03\u7528 \u3002<samp>convertLead<\/samp><\/li>\n\n\n\n<li>\u5e94\u7528\u7a0b\u5e8f\u5faa\u73af\u8bbf\u95ee\u8fd4\u56de\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u7ed3\u679c\uff0c\u5e76\u68c0\u67e5\u6bcf\u4e2a\u7ed3\u679c LeadConvertResult \u5bf9\u8c61\uff0c\u7528\u4e8e\u786e\u5b9a\u6bcf\u4e2a \u94c5\u3002<\/li>\n\n\n\n<li>\uff08\u53ef\u9009\uff09\u5728\u8f6c\u6362\u961f\u5217\u62e5\u6709\u7684\u6f5c\u5728\u987e\u5ba2\u65f6\uff0c\u5fc5\u987b\u6307\u5b9a\u6240\u6709\u8005\u3002 \u8fd9\u662f\u56e0\u4e3a\u5ba2\u6237\u548c\u8054\u7cfb\u4eba\u4e0d\u80fd\u5f52\u961f\u5217\u6240\u6709\u3002\u5373\u4f7f\u4f60\u662f \u6307\u5b9a\u73b0\u6709\u5ba2\u6237\u6216\u8054\u7cfb\u4eba\u65f6\uff0c\u4ecd\u5fc5\u987b\u6307\u5b9a\u6240\u6709\u8005\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b<\/h2>\n\n\n\n<p>\u6b64\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u4f7f\u7528\u8be5\u65b9\u6cd5\u8f6c\u6362\u6f5c\u5728\u987e\u5ba2\u3002\u5b83\u63d2\u5165\u4e86\u4e00\u6761\u65b0\u7684\u5f15\u7ebf\uff0c \u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61\uff0c\u8bbe\u7f6e\u5176 status \u8bbe\u7f6e\u4e3a converted\uff0c\u7136\u540e\u5c06\u5176\u4f20\u9012\u7ed9\u8be5\u65b9\u6cd5\u3002\u6700\u540e\uff0c\u5b83\u9a8c\u8bc1\u8f6c\u6362 \u6210\u529f\u4e86\u3002<samp>Database.convertLead<\/samp><samp>LeadConvert<\/samp><samp>Database.convertLead<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lead myLead = new Lead(LastName = 'Fry', Company='Fry And Sons');\ninsert myLead;\n\nDatabase.LeadConvert lc = new database.LeadConvert();\nlc.setLeadId(myLead.id);\n\nLeadStatus convertStatus = &#91;SELECT Id, MasterLabel FROM LeadStatus WHERE IsConverted=true LIMIT 1];\nlc.setConvertedStatus(convertStatus.MasterLabel);\n\nDatabase.LeadConvertResult lcr = Database.convertLead(lc);\nSystem.assert(lcr.isSuccess());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u8f6c\u6362\u6f5c\u5728\u5ba2\u6237\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b57\u6bb5\u6620\u5c04\uff1a\u7cfb\u7edf\u81ea\u52a8\u5c06\u6807\u51c6\u6f5c\u5728\u5ba2\u6237\u5b57\u6bb5\u6620\u5c04\u5230\u6807\u51c6 \u5ba2\u6237\u3001\u8054\u7cfb\u4eba\u548c\u5546\u673a\u5b57\u6bb5\u3002\u5bf9\u4e8e\u81ea\u5b9a\u4e49\u6f5c\u5728\u5ba2\u6237\u5b57\u6bb5\uff0c\u60a8\u7684 Salesforce \u7ba1\u7406\u5458\u53ef\u4ee5\u6307\u5b9a\u5b83\u4eec\u5982\u4f55\u6620\u5c04\u5230\u81ea\u5b9a\u4e49\u5e10\u6237\u3001\u8054\u7cfb\u4eba\u3001 \u548c\u673a\u4f1a\u5b57\u6bb5\u3002\u6709\u5173\u5b57\u6bb5\u6620\u5c04\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 Salesforce \u5e2e\u52a9\u3002<\/li>\n\n\n\n<li>\u5408\u5e76\u5b57\u6bb5\uff1a\u5982\u679c\u6570\u636e\u5408\u5e76\u5230\u73b0\u6709\u5ba2\u6237\u548c\u8054\u7cfb\u4eba\u5bf9\u8c61\u4e2d\uff0c\u5219\u4ec5 \u76ee\u6807\u5bf9\u8c61\u4e2d\u7684\u7a7a\u5b57\u6bb5\u5c06\u88ab\u8986\u76d6 &#8211; \u73b0\u6709\u6570\u636e \uff08\u5305\u62ec ID\uff09\u4e0d\u4f1a\u88ab\u8986\u76d6\u3002\u552f\u4e00\u7684\u4f8b\u5916\u662f\uff0c\u5982\u679c\u60a8\u5728 LeadConvert \u5bf9\u8c61\u8bbe\u7f6e\u4e3a true\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u76ee\u6807\u8054\u7cfb\u4eba\u5bf9\u8c61\u4e2d\u7684\u5b57\u6bb5\u5c06\u8986\u76d6 \u5b57\u6bb5\u4e2d\u7684\u5185\u5bb9 \u6e90 LeadConvert \u5bf9\u8c61\u3002<samp>setOverwriteLeadSource<\/samp><samp>LeadSource<\/samp><samp>LeadSource<\/samp><\/li>\n\n\n\n<li>\u8bb0\u5f55\u7c7b\u578b\uff1a\u5982\u679c\u7ec4\u7ec7\u4f7f\u7528\u8bb0\u5f55\u7c7b\u578b\uff0c\u5219\u9ed8\u8ba4\u8bb0\u5f55\u7c7b\u578b\u4e3a \u65b0\u6240\u6709\u8005\u5c06\u5206\u914d\u7ed9\u6f5c\u5728\u987e\u5ba2\u8f6c\u6362\u671f\u95f4\u521b\u5efa\u7684\u8bb0\u5f55\u3002\u9ed8\u8ba4 \u8f6c\u6362\u6f5c\u5728\u987e\u5ba2\u7684\u7528\u6237\u7684\u8bb0\u5f55\u7c7b\u578b\u51b3\u5b9a\u4e86\u6f5c\u5728\u987e\u5ba2\u6765\u6e90\u503c \u5728\u8f6c\u6362\u671f\u95f4\u53ef\u7528\u3002\u5982\u679c\u6240\u9700\u7684\u6f5c\u5728\u5ba2\u6237\u6e90\u503c\u4e0d\u662f available\uff0c\u5c06\u503c\u6dfb\u52a0\u5230\u7528\u6237\u8f6c\u6362 \u94c5\u3002\u6709\u5173\u8bb0\u5f55\u7c7b\u578b\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 Salesforce \u5e2e\u52a9\u3002<\/li>\n\n\n\n<li>\u9009\u62e9\u5217\u8868\u503c\uff1a\u7cfb\u7edf\u4e3a\u5e10\u6237\u5206\u914d\u9ed8\u8ba4\u9009\u62e9\u5217\u8868\u503c\uff0c \u8054\u7cfb\u4eba\u548c\u673a\u4f1a\uff0c\u5728\u6620\u5c04\u4efb\u4f55\u6807\u51c6\u6f5c\u5728\u5ba2\u6237\u9009\u62e9\u5217\u8868\u5b57\u6bb5\u65f6 \u7a7a\u767d\u3002\u5982\u679c\u60a8\u7684\u7ec4\u7ec7\u4f7f\u7528\u8bb0\u5f55\u7c7b\u578b\uff0c\u5219\u7a7a\u767d\u503c\u5c06\u66ff\u6362\u4e3a \u65b0\u8bb0\u5f55\u6240\u6709\u8005\u7684\u9ed8\u8ba4\u9009\u62e9\u5217\u8868\u503c\u3002<\/li>\n\n\n\n<li>\u81ea\u52a8\u8ba2\u9605 Feed\uff1a\u5f53\u60a8\u5c06\u6f5c\u5728\u5ba2\u6237\u8f6c\u5316\u4e3a\u65b0\u5e10\u53f7\u65f6\uff0c \u8054\u7cfb\u4eba\u548c\u5546\u673a\uff0c\u6f5c\u5728\u5ba2\u6237\u6240\u6709\u8005\u5df2\u53d6\u6d88\u8ba2\u9605\u6f5c\u5728\u5ba2\u6237\u8bb0\u5f55\u7684 \u804a\u5929\u63d0\u8981\u3002\u4e3b\u8981\u6240\u6709\u8005\u3001\u751f\u6210\u8bb0\u5f55\u7684\u6240\u6709\u8005\u4ee5\u53ca \u5df2\u8ba2\u9605\u7684\u6f5c\u5728\u5ba2\u6237\u4e0d\u4f1a\u81ea\u52a8\u8ba2\u9605 \u751f\u6210\u7684\u8bb0\u5f55\uff0c\u9664\u975e\u5b83\u4eec\u5728 Chatter \u6458\u8981\u8bbe\u7f6e\u3002\u4ed6\u4eec\u5fc5\u987b\u542f\u7528\u81ea\u52a8\u8ba2\u9605\u624d\u80fd\u67e5\u770b \u66f4\u6539\u5176\u65b0\u95fb\u6e90\u4e2d\u7684\u5ba2\u6237\u3001\u8054\u7cfb\u4eba\u548c\u5546\u673a\u8bb0\u5f55\u3002\u81ea \u8ba2\u9605\u4ed6\u4eec\u521b\u5efa\u7684\u8bb0\u5f55\uff0c\u7528\u6237\u5fc5\u987b\u542f\u7528\u81ea\u52a8 \u9075\u5faa\u6211\u5728\u4ed6\u4eec\u7684\u4e2a\u4eba\u8bbe\u7f6e\u4e2d\u521b\u5efa\u9009\u9879\u7684\u8bb0\u5f55\u3002\u4e00\u4e2a \u7528\u6237\u53ef\u4ee5\u8ba2\u9605\u8bb0\u5f55\uff0c\u4ee5\u4fbf\u5bf9\u8bb0\u5f55\u7684\u66f4\u6539\u663e\u793a\u5728\u65b0\u95fb\u4e2d \u7528\u6237\u4e3b\u9875\u4e0a\u7684\u6e90\u3002\u8fd9\u662f\u4e86\u89e3\u6700\u65b0\u60c5\u51b5\u7684\u6709\u7528\u65b9\u6cd5 \u5bf9 Salesforce \u4e2d\u8bb0\u5f55\u7684\u66f4\u6539\u3002<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">\u5f02\u5e38\u5904\u7406<\/h1>\n\n\n\n<p>\u5982\u679c\u51fa\u73b0\u95ee\u9898\uff0cDML \u8bed\u53e5\u5c06\u8fd4\u56de\u8fd0\u884c\u65f6\u5f02\u5e38 \u5728\u6267\u884c DML \u64cd\u4f5c\u671f\u95f4\u5728\u6570\u636e\u5e93\u4e2d\u3002\u60a8\u53ef\u4ee5 \u901a\u8fc7\u5305\u88c5 DML \u8bed\u53e5\u6765\u5904\u7406\u4ee3\u7801\u4e2d\u7684\u5f02\u5e38 \u5728 try-catch \u5757\u4e2d\u3002\u4ee5\u4e0b\u793a\u4f8b\u5728 try-catch \u4e2d\u5305\u542b DML \u8bed\u53e5 \u5757\u3002<samp>insert<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account a = new Account(Name='Acme');\ntry {\n    insert a;\n} catch(DmlException e) {\n    \/\/ Process exception here\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Database \u7c7b\u65b9\u6cd5 Result \u5bf9\u8c61<\/h1>\n\n\n\n<p>\u6570\u636e\u5e93\u7c7b\u65b9\u6cd5\u8fd4\u56de\u6570\u636e\u64cd\u4f5c\u7684\u7ed3\u679c\u3002 \u8fd9\u4e9b\u7ed3\u679c\u5bf9\u8c61\u5305\u542b\u6709\u5173\u6570\u636e\u64cd\u4f5c\u7684\u6709\u7528\u4fe1\u606f \u5bf9\u4e8e\u6bcf\u6761\u8bb0\u5f55\uff0c\u4f8b\u5982\u64cd\u4f5c\u662f\u5426\u6210\u529f\uff0c \u4ee5\u53ca\u4efb\u4f55\u9519\u8bef\u4fe1\u606f\u3002\u6bcf\u79cd\u7c7b\u578b\u7684\u64cd\u4f5c\u90fd\u8fd4\u56de\u4e00\u4e2a\u7279\u5b9a\u7684 result \u5bf9\u8c61\u7c7b\u578b\uff0c\u5982\u4e0b\u6240\u8ff0\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u64cd\u4f5c<\/th><th>Result \u7c7b<\/th><\/tr><\/thead><tbody><tr><td>\u63d2\u5165\u3001\u66f4\u65b0<\/td><td>SaveResult \u7c7b<\/td><\/tr><tr><td>\u66f4\u65b0\u63d2\u5165<\/td><td>UpsertResult \u7c7b<\/td><\/tr><tr><td>\u5408\u5e76<\/td><td>MergeResult \u7c7b<\/td><\/tr><tr><td>\u5220\u9664<\/td><td>DeleteResult \u7c7b<\/td><\/tr><tr><td>\u53d6\u6d88\u5220\u9664<\/td><td>UndeleteResult \u7c7b<\/td><\/tr><tr><td>convertLead\uff08\u8f6c\u6362\u94c5\uff09<\/td><td>LeadConvertResult \u7c7b<\/td><\/tr><tr><td>emptyRecycleBin<\/td><td>EmptyRecycleBinResult \u7c7b<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u8fd4\u56de\u7684\u6570\u636e\u5e93\u9519\u8bef<\/h1>\n\n\n\n<p>\u800c DML \u8bed\u53e5\u603b\u662f\u5728\u64cd\u4f5c\u65f6\u8fd4\u56de\u5f02\u5e38 \u6b63\u5728\u5904\u7406\u7684\u5176\u4e2d\u4e00\u6761\u8bb0\u5f55\u5931\u8d25\uff0c\u64cd\u4f5c\u662f \u56de\u6eda\u6240\u6709\u8bb0\u5f55\uff0cDatabase \u7c7b\u65b9\u6cd5\u53ef\u4ee5\u6267\u884c \u56e0\u6b64\uff0c\u6216\u5141\u8bb8\u8bb0\u5f55\u5904\u7406\u90e8\u5206\u6210\u529f\u3002\u5728\u540e\u4e00\u79cd\u60c5\u51b5\u4e0b \u90e8\u5206\u5904\u7406\uff0cDatabase \u7c7b\u65b9\u6cd5\u4e0d\u4f1a\u629b\u51fa\u5f02\u5e38\u3002 \u76f8\u53cd\uff0c\u5b83\u4eec\u4f1a\u8fd4\u56de\u53d1\u751f\u7684\u4efb\u4f55\u9519\u8bef\u7684\u9519\u8bef\u5217\u8868 \u5728\u5931\u8d25\u7684\u8bb0\u5f55\u4e0a\u3002<\/p>\n\n\n\n<p>\u8fd9\u4e9b\u9519\u8bef\u63d0\u4f9b\u6709\u5173\u5931\u8d25\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u5e76\u5305\u542b\u5728\u5185 \u5728 Database \u7c7b\u65b9\u6cd5\u7684\u7ed3\u679c\u4e2d\u3002\u4f8b\u5982\uff0c\u8fd4\u56de\u4e00\u4e2a\u5bf9\u8c61 \u63d2\u5165\u548c\u66f4\u65b0\u64cd\u4f5c\u3002\u4e0e\u6240\u6709\u8fd4\u56de\u7684\u7ed3\u679c\u4e00\u6837\uff0c\u5305\u542b\u4e00\u4e2a\u8c03\u7528\u7684\u65b9\u6cd5\uff0c\u8be5\u65b9\u6cd5\u8fd4\u56de\u5bf9\u8c61\u5217\u8868\uff0c\u8868\u793a \u9047\u5230\u7684\u9519\u8bef\uff08\u5982\u679c\u6709\uff09\u3002<samp>SaveResult<\/samp><samp>SaveResult<\/samp><samp>getErrors<\/samp><samp>Database.Error<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f8b<\/h2>\n\n\n\n<p>\u6b64\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u83b7\u53d6 \u64cd\u4f5c\u8fd4\u56de\u7684\u9519\u8bef\u3002\u5b83\u63d2\u5165\u4e24\u4e2a\u5e10\u6237\uff0c\u5176\u4e2d\u4e00\u4e2a\u6ca1\u6709 \u5177\u6709\u5fc5\u586b\u7684 Name \u5b57\u6bb5\uff0c\u5e76\u5c06\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8bbe\u7f6e\u4e3a \uff1a \u3002\u8fd9\u5c06\u8bbe\u7f6e\u90e8\u5206\u5904\u7406 \u9009\u62e9\u3002\u63a5\u4e0b\u6765\uff0c\u8be5\u793a\u4f8b\u68c0\u67e5\u8c03\u7528\u662f\u5426\u6709\u4efb\u4f55\u5931\u8d25\uff0c\u7136\u540e\u8fed\u4ee3 \u901a\u8fc7\u9519\u8bef\uff0c\u5c06\u9519\u8bef\u4fe1\u606f\u5199\u5165\u8c03\u8bd5\u65e5\u5fd7\u3002<samp>Database.insert<\/samp><samp>false<\/samp><samp>Database.insert(accts, false);<\/samp><samp>if&nbsp;(!sr.isSuccess())<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Create two accounts, one of which is missing a required field\nAccount&#91;] accts = new List&lt;Account&gt;{\n    new Account(Name='Account1'),\n    new Account()};\nDatabase.SaveResult&#91;] srList = Database.insert(accts, false);\n\n\/\/ Iterate through each returned result\nfor (Database.SaveResult sr : srList) {\n    if (!sr.isSuccess()) {\n        \/\/ Operation failed, so get all errors                \n        for(Database.Error err : sr.getErrors()) {\n            System.debug('The following error has occurred.');                    \n            System.debug(err.getStatusCode() + ': ' + err.getMessage());\n            System.debug('Fields that affected this error: ' + err.getFields());\n        }\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e<\/p>\n","protected":false},"author":1,"featured_media":3652,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199],"tags":[],"class_list":["post-3651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apex-"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14<\/title>\n<meta name=\"description\" content=\"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.ponybai.com\/?p=3651\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14\" \/>\n<meta property=\"og:description\" content=\"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.ponybai.com\/?p=3651\" \/>\n<meta property=\"og:site_name\" content=\"\u767d\u767d\u968f\u7b14\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-25T07:24:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-21T08:40:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2023\/11\/Apex-DML.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1330\" \/>\n\t<meta property=\"og:image:height\" content=\"382\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"ponybai\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"ponybai\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.ponybai.com\/?p=3651#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=3651\"},\"author\":{\"name\":\"ponybai\",\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"headline\":\"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e\",\"datePublished\":\"2023-11-25T07:24:28+00:00\",\"dateModified\":\"2023-11-21T08:40:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=3651\"},\"wordCount\":516,\"publisher\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"articleSection\":[\"Apex \u5f00\u53d1\u4eba\u5458\u6307\u5357\"],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.ponybai.com\/?p=3651\",\"url\":\"http:\/\/www.ponybai.com\/?p=3651\",\"name\":\"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14\",\"isPartOf\":{\"@id\":\"http:\/\/www.ponybai.com\/#website\"},\"datePublished\":\"2023-11-25T07:24:28+00:00\",\"dateModified\":\"2023-11-21T08:40:28+00:00\",\"description\":\"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e\",\"breadcrumb\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=3651#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.ponybai.com\/?p=3651\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.ponybai.com\/?p=3651#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/www.ponybai.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.ponybai.com\/#website\",\"url\":\"http:\/\/www.ponybai.com\/\",\"name\":\"\u767d\u767d\u968f\u7b14\",\"description\":\"Salesforce\u5b98\u65b9\u8bb2\u5e08\",\"publisher\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.ponybai.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\",\"name\":\"ponybai\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg\",\"contentUrl\":\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg\",\"width\":248,\"height\":248,\"caption\":\"ponybai\"},\"logo\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/121.37.188.161\"],\"url\":\"http:\/\/www.ponybai.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14","description":"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.ponybai.com\/?p=3651","og_locale":"zh_CN","og_type":"article","og_title":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14","og_description":"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e","og_url":"http:\/\/www.ponybai.com\/?p=3651","og_site_name":"\u767d\u767d\u968f\u7b14","article_published_time":"2023-11-25T07:24:28+00:00","article_modified_time":"2023-11-21T08:40:28+00:00","og_image":[{"width":1330,"height":382,"url":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2023\/11\/Apex-DML.png","type":"image\/png"}],"author":"ponybai","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"ponybai","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.ponybai.com\/?p=3651#article","isPartOf":{"@id":"http:\/\/www.ponybai.com\/?p=3651"},"author":{"name":"ponybai","@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"headline":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e","datePublished":"2023-11-25T07:24:28+00:00","dateModified":"2023-11-21T08:40:28+00:00","mainEntityOfPage":{"@id":"http:\/\/www.ponybai.com\/?p=3651"},"wordCount":516,"publisher":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"articleSection":["Apex \u5f00\u53d1\u4eba\u5458\u6307\u5357"],"inLanguage":"zh-Hans"},{"@type":"WebPage","@id":"http:\/\/www.ponybai.com\/?p=3651","url":"http:\/\/www.ponybai.com\/?p=3651","name":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e - \u767d\u767d\u968f\u7b14","isPartOf":{"@id":"http:\/\/www.ponybai.com\/#website"},"datePublished":"2023-11-25T07:24:28+00:00","dateModified":"2023-11-21T08:40:28+00:00","description":"\u60a8\u53ef\u4ee5\u5728 Lightning \u5e73\u53f0\u6301\u4e45\u6027\u5c42\u4e2d\u6dfb\u52a0\u6570\u636e\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u8fd9 sObject \u6570\u636e\u7c7b\u578b\u662f\u4fdd\u5b58\u6570\u636e\u5bf9\u8c61\u7684\u4e3b\u8981\u6570\u636e\u7c7b\u578b\u3002\u60a8\u5c06\u4f7f\u7528\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u7528\u4e8e\u5904\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528\u67e5\u8be2\u8bed\u8a00\u68c0\u7d22\u6570\u636e","breadcrumb":{"@id":"http:\/\/www.ponybai.com\/?p=3651#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.ponybai.com\/?p=3651"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.ponybai.com\/?p=3651#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/www.ponybai.com\/"},{"@type":"ListItem","position":2,"name":"\u5728 Apex \u4e2d\u5904\u7406\u6570\u636e"}]},{"@type":"WebSite","@id":"http:\/\/www.ponybai.com\/#website","url":"http:\/\/www.ponybai.com\/","name":"\u767d\u767d\u968f\u7b14","description":"Salesforce\u5b98\u65b9\u8bb2\u5e08","publisher":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.ponybai.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883","name":"ponybai","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/","url":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg","contentUrl":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg","width":248,"height":248,"caption":"ponybai"},"logo":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/121.37.188.161"],"url":"http:\/\/www.ponybai.com\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/3651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3651"}],"version-history":[{"count":1,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/3651\/revisions"}],"predecessor-version":[{"id":3653,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/3651\/revisions\/3653"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/media\/3652"}],"wp:attachment":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3651"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}