DML statment cannot operate on trigger.new or trigger.old

类似如下:
trigger CallLineItemRename on Call_Line_Item__c (before insert, before update) {
	// this triger renames the call line item id to be 
	// the specified inventory item name or the product name
	List callItems = new List();
	callItems = Trigger.new;
		
	for (Call_Line_Item__c callItem : callItems) {
		//check if inventory or product was specified
		if (callItem.Inventory_Item__c <> NULL)  {
			callItem.Name = callItem.Inventory_Item__r.Name;
			callItem.Name = 'inv item name';
		} else if (callItem.Products__c <> NULL)  {
			callItem.Name = callItem.Products__r.Name;
		}
	}
		update callItems;
	
}

处理方法:
把如上操作放在@future方法中即可。
如出现future method cannot be called from a future or batch method trigger
参见:   http://blog.csdn.net/u011030936/article/details/10931545

你可能感兴趣的:(salesforce云计算)