Public static void main()


List<Contact> conList = new List<Contact>();

for(integer i=0; i<10; i++)



conList.add(new Contact());


conList.add(new Contact(lastname=’ABC’+1));


insert conList; // Throws DML Exception

Database.insert(conList, false); // Doesnt throws exception if a record fails


In DML Statements if there is an error or problem in any of the record then the whole DML results in an exception. (DML Expection) which you can handle on your own whereas in database class methods we can specify whether or not to allow partial record passing if errors are encountered.

We can do so by passing an additional boolean parameter.

When this parameter is set as false and if a record fails the remainder of DML operation can still succeed.


Database.insert(conList, false);

Database Class Methods

1. Database.insert():


List<Account> accountsToInsert = new List<Account>();

Account accountToUpdate;

for(Integer i=0; i<3; i++){

Account acc = new Account(Name = ‘Simplilearn’, BillingCity = ‘New York’);




2. Database.update():

Ex :

accountToUpdate = [Select BillingCity FROM Account WHERE Name = ‘Simplilearn’ LIMIT 1];

accountToUpdate.BillingCity = ‘San Francisco’;


Account afterUpdate = [Select BillingCity FROM Account WHERE Id =: accountToUpdate.Id];

System.assertEquals(afterUpdate.BillingCity, ‘San Francisco’);

3. Database.upsert():

Syntax : Databse.upsert(sObject/List<sObject>, externalIdField, allOrNone);

Note:  If externalIdField left blank then id field will be used as external id.

List<Account> accountsList = [SELECT Id, Name, BillingCity

                        FROM Account WHERE BillingCity = ‘San Francisco’];

for (Account acc : accountsList) {

    acc.BillingCity = ‘Las Vegas’;


Account newAccount = new Account(Name = ‘SimpliLearn’, BillingCity = ‘Palo Alto’);



4. Database.delete():


List<Account> accList = [SELECT name FROM account limit 10];

Database.delete(accList, false);

Note:  You cannot delete an account which have cases related to it.

5. Database.undelete():

Ex :

List<Account> accList = [SELECT name FROM account

WHERE isDeleted=true ALL ROWS]

Database.undelete(accList, false);

6. Database.merge():

Syntax :


duplicate (sObject/List<sObject/ID/List<ID>), allOrNone);

Ex :

List<Account> accList = [SELECT name FROM account LIMIT 3];

Account masterRecord = accList[0];

List<Account> dupList = new List<Account>;



Database.merge(masterRecord, dupList);

Our Recent Blog

Share This Post