Does Batch Apex fire off triggers?

Yes, triggers will fire when the Batch Apex runs and if you have large numbers of records in your batch you will hit the governor limit.

One solution would be to set the batch size to 1 so that every time the triggers fire there will only be 1 record. The batch class can be started with a batch size of one using something like this:

Id batchInstanceId = Database.executeBatch(new MyBatchClass(), 1); 

Another solution, and probably the best one, is to bulkify your triggers.


A third solution is to consider if you don't need the trigger processing to occur, in addition to BarCotter's good suggestions, is to set a static boolean variable that your triggers could use to avoid trigger processing.

public static boolean isRunningBatch;

Set to true at the start of your execute method and then in your triggers:

if (!isRunningBatch) { //run trigger code }

This only makes sense if you don't need the trigger logic during the batch however.