diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc
index e34c0c5..2a92465 100644
--- a/modules/field/field.crud.inc
+++ b/modules/field/field.crud.inc
@@ -548,7 +548,7 @@ function field_update_instance($instance) {
  * @param $update
  *   Whether this is a new or existing instance.
  */
-function _field_write_instance($instance, $update = FALSE) {
+function _field_write_instance(&$instance, $update = FALSE) {
   $field = field_read_field($instance['field_name']);
   $field_type = field_info_field_types($field['type']);
 
@@ -625,11 +625,11 @@ function _field_write_instance($instance, $update = FALSE) {
   if ($update) {
     $record['id'] = $instance['id'];
     $primary_key = array('id');
+    drupal_write_record('field_config_instance', $record, $primary_key);
   }
   else {
-    $primary_key = array();
+    $instance['id'] = drupal_write_record('field_config_instance', $record);
   }
-  drupal_write_record('field_config_instance', $record, $primary_key);
 }
 
 /**
