Update the storage information for a field.
This is invoked on the field's storage module when updating the field, before the new definition is saved to the database. The field storage module should update its storage tables according to the new field definition. If there is a problem, the field storage module should throw an exception.
$field: The updated field structure to be saved.
$prior_field: The previously-saved field structure.
$has_data: TRUE if the field has data in storage currently.
Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.
function hook_field_storage_update_field($field, $prior_field, $has_data) {
if (!$has_data) {
// There is no data. Re-create the tables completely.
$prior_schema = _field_sql_storage_schema($prior_field);
foreach ($prior_schema as $name => $table) {
db_drop_table($name, $table);
}
$schema = _field_sql_storage_schema($field);
foreach ($schema as $name => $table) {
db_create_table($name, $table);
}
}
else {
// There is data. See field_sql_storage_field_storage_update_field() for
// an example of what to do to modify the schema in place, preserving the
// old data as much as possible.
}
drupal_get_schema(NULL, TRUE);
}