diff --git a/entityreference.module b/entityreference.module
index d5c91ae..18b329e 100644
--- a/entityreference.module
+++ b/entityreference.module
@@ -258,6 +258,23 @@ function entityreference_field_insert($entity_type, $entity, $field, $instance,
 }
 
 /**
+ * Implements hook_field_attach_insert().
+ *
+ * Emulates a post-insert hook.
+ */
+function entityreference_field_attach_insert($entity_type, $entity) {
+  list(, , $bundle) = entity_extract_ids($entity_type, $entity);
+  foreach (field_info_instances($entity_type, $bundle) as $field_name => $instance) {
+    $field = field_info_field($field_name);
+    if ($field['type'] == 'entityreference') {
+      foreach (entityreference_get_behavior_handlers($field, $instance) as $handler) {
+        $handler->postInsert($entity_type, $entity, $field, $instance);
+      }
+    }
+  }
+}
+
+/**
  * Implements hook_field_update().
  */
 function entityreference_field_update($entity_type, $entity, $field, $instance, $langcode, &$items) {
@@ -268,6 +285,23 @@ function entityreference_field_update($entity_type, $entity, $field, $instance,
 }
 
 /**
+ * Implements hook_field_attach_update().
+ *
+ * Emulates a post-update hook.
+ */
+function entityreference_field_attach_update($entity_type, $entity) {
+  list(, , $bundle) = entity_extract_ids($entity_type, $entity);
+  foreach (field_info_instances($entity_type, $bundle) as $field_name => $instance) {
+    $field = field_info_field($field_name);
+    if ($field['type'] == 'entityreference') {
+      foreach (entityreference_get_behavior_handlers($field, $instance) as $handler) {
+        $handler->postUpdate($entity_type, $entity, $field, $instance);
+      }
+    }
+  }
+}
+
+/**
  * Implements hook_field_delete().
  */
 function entityreference_field_delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
@@ -278,6 +312,23 @@ function entityreference_field_delete($entity_type, $entity, $field, $instance,
 }
 
 /**
+ * Implements hook_field_attach_delete().
+ *
+ * Emulates a post-delete hook.
+ */
+function entityreference_field_attach_delete($entity_type, $entity) {
+  list(, , $bundle) = entity_extract_ids($entity_type, $entity);
+  foreach (field_info_instances($entity_type, $bundle) as $field_name => $instance) {
+    $field = field_info_field($field_name);
+    if ($field['type'] == 'entityreference') {
+      foreach (entityreference_get_behavior_handlers($field, $instance) as $handler) {
+        $handler->postDelete($entity_type, $entity, $field, $instance);
+      }
+    }
+  }
+}
+
+/**
  * Implements hook_field_settings_form().
  */
 function entityreference_field_settings_form($field, $instance, $has_data) {
diff --git a/plugins/behavior/abstract.inc b/plugins/behavior/abstract.inc
index d3ce5b8..65a27e4 100644
--- a/plugins/behavior/abstract.inc
+++ b/plugins/behavior/abstract.inc
@@ -66,13 +66,20 @@ interface EntityReference_BehaviorHandler {
   public function presave($entity_type, $entity, $field, $instance, $langcode, &$items);
 
   /**
-   * Act after inserting an entity reference field.
+   * Act before inserting an entity reference field.
    *
    * @see hook_field_insert()
    */
   public function insert($entity_type, $entity, $field, $instance, $langcode, &$items);
 
   /**
+   * Act after inserting an entity reference field.
+   *
+   * @see hook_field_attach_insert()
+   */
+  public function postInsert($entity_type, $entity, $field, $instance);
+
+  /**
    * Act after updating an entity reference field.
    *
    * @see hook_field_update()
@@ -80,13 +87,27 @@ interface EntityReference_BehaviorHandler {
   public function update($entity_type, $entity, $field, $instance, $langcode, &$items);
 
   /**
-   * Act after deleting entity reference field.
+   * Act before inserting an entity reference field.
+   *
+   * @see hook_field_attach_insert()
+   */
+  public function postUpdate($entity_type, $entity, $field, $instance);
+
+  /**
+   * Act before deleting an entity with an entity reference field.
    *
    * @see hook_field_delete()
    */
   public function delete($entity_type, $entity, $field, $instance, $langcode, &$items);
 
   /**
+   * Act after deleting an entity with an entity reference field.
+   *
+   * @see hook_field_attach_delete()
+   */
+  public function postDelete($entity_type, $entity, $field, $instance);
+
+  /**
    * Generate a settings form for this handler.
    */
   public function settingsForm($field, $instance);
@@ -136,10 +157,16 @@ abstract class EntityReference_BehaviorHandler_Abstract implements EntityReferen
 
   public function insert($entity_type, $entity, $field, $instance, $langcode, &$items) {}
 
+  public function postInsert($entity_type, $entity, $field, $instance) {}
+
   public function update($entity_type, $entity, $field, $instance, $langcode, &$items) {}
 
+  public function postUpdate($entity_type, $entity, $field, $instance) {}
+
   public function delete($entity_type, $entity, $field, $instance, $langcode, &$items) {}
 
+  public function postDelete($entity_type, $entity, $field, $instance) {}
+
   public function settingsForm($field, $instance) {}
 
   public function access($field, $instance) {
