7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apex Triggerの一括処理検証(200件以上)

Posted at

結論

・insert / update の場合、200件ごとにトリガーを実行する
・delete / undelete の場合、全件でトリガーを実行する
・DML単位で before、after の順でイベントを処理する

====== 検証 ======

1.トリガー作成


trigger XXXXXXTrigger on XXXXXX__c  (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
	if (Trigger.Isbefore && Trigger.Isinsert) {
	    system.debug('before insert:' + Trigger.size);
	}
	
	if (Trigger.Isafter && Trigger.Isinsert) {
	    system.debug('after insert:' + Trigger.size);
	}
	
	if (Trigger.Isbefore && Trigger.Isupdate) {
	    system.debug('before update:' + Trigger.size);
	}
	
	if (Trigger.Isafter && Trigger.Isupdate) {
	    system.debug('after update:' + Trigger.size);
	}
	
	if (Trigger.Isbefore && Trigger.Isdelete) {
	    system.debug('before delete:' + Trigger.size);
	}
	
	if (Trigger.Isafter && Trigger.Isdelete) {
	    system.debug('after delete:' + Trigger.size);
	}
	
	if (Trigger.Isafter && Trigger.Isundelete) {
	    system.debug('after undelete:' + Trigger.size);
	}
}

2.executeAnonymous で下記のコードを実行する


Savepoint sp = Database.setSavepoint();

System.debug('Insert 処理');
List<XXXXXX__c> xxList = new  List<XXXXXX__c>();
for (Integer i=0;i<1000;i++) {
    xxList.add(new XXXXXX__c());
}
insert xxList;

System.debug('update 処理');
update xxList;

System.debug('delete 処理');
delete xxList;

System.debug('undelete 処理');
undelete xxList;

Database.rollback(sp);

3.出力ログ一覧

16:27:04:003 USER_DEBUG [3]|DEBUG|Insert 処理
16:27:04:106 USER_DEBUG [3]|DEBUG|before insert:200
16:27:04:652 USER_DEBUG [7]|DEBUG|after insert:200
16:27:11:213 USER_DEBUG [3]|DEBUG|before insert:200
16:27:11:880 USER_DEBUG [7]|DEBUG|after insert:200
16:27:18:322 USER_DEBUG [3]|DEBUG|before insert:200
16:27:18:962 USER_DEBUG [7]|DEBUG|after insert:200
16:27:25:083 USER_DEBUG [3]|DEBUG|before insert:200
16:27:25:780 USER_DEBUG [7]|DEBUG|after insert:200
16:27:31:773 USER_DEBUG [3]|DEBUG|before insert:200
16:27:32:405 USER_DEBUG [7]|DEBUG|after insert:200
16:27:39:166 USER_DEBUG [10]|DEBUG|update 処理
16:27:40:681 USER_DEBUG [11]|DEBUG|before update:200
16:27:41:145 USER_DEBUG [15]|DEBUG|after update:200
16:27:42:493 USER_DEBUG [11]|DEBUG|before update:200
16:27:42:950 USER_DEBUG [15]|DEBUG|after update:200
16:27:44:229 USER_DEBUG [11]|DEBUG|before update:200
16:27:44:711 USER_DEBUG [15]|DEBUG|after update:200
16:27:46:549 USER_DEBUG [11]|DEBUG|before update:200
16:27:47:029 USER_DEBUG [15]|DEBUG|after update:200
16:27:48:448 USER_DEBUG [11]|DEBUG|before update:200
16:27:48:942 USER_DEBUG [15]|DEBUG|after update:200
16:27:48:962 USER_DEBUG [13]|DEBUG|delete 処理
16:27:49:462 USER_DEBUG [19]|DEBUG|before delete:1000
16:27:55:448 USER_DEBUG [23]|DEBUG|after delete:1000
16:27:55:476 USER_DEBUG [16]|DEBUG|undelete 処理
16:28:13:820 USER_DEBUG [27]|DEBUG|after undelete:1000

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?