db_add_field

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/database.mysql-common.inc, строка 286

Версии
6
db_add_field(&$ret, $table, $field, $spec, $keys_new = array())

Добавляет новое поле в таблицу.

Параметры

$ret Массив, к которому будут добавлены результаты запроса.

$table Имя изменяемой таблицы.

$field Название добавляемого поля.

$spec Массив описаний поля, такой же, как получаемый из описания схемы. Описание может также содержать ключ 'initial', значениям нового поля во всех строках будут присвоено значение ключа. Это удобно использовать при создании НЕ ПУСТЫХ полей без значения по умолчанию в существующих таблицах.

$keys_new Дополнительные описания ключей и индексов, которые необходимо создать в таблице при добавлении поля. Формат такой же как в описании таблицы, но без элемента 'fields'. Если Вы добавляете поля типа 'serial', вы ДОЛЖНЫ указать минимум одно ключевое поле или индекс, включающее его, в этом массиве. См. также db_change_field() для подробных объяснений зачем это нужно.

Связанные темы

▾ 11 функции вызывают db_add_field()

hook_update_N in developer/hooks/install.php
Производит обновление таблиц БД, необходимое для единичного обновления модуля.
system_update_6001 in modules/system/system.install
Add version id column to {term_node} to allow taxonomy module to use revisions.
system_update_6010 in modules/system/system.install
Add variable replacement for watchdog messages.
system_update_6021 in modules/system/system.install
Migrate the menu items from the old menu system to the new menu_links table.
system_update_6022 in modules/system/system.install
Update files tables to associate files to a uid by default instead of a nid. Rename file_revisions to upload since it should only be used by the upload module used by upload to link files to nodes.
system_update_6024 in modules/system/system.install
Add translation fields to nodes used by translation module.
system_update_6027 in modules/system/system.install
Add block cache.
system_update_6036 in modules/system/system.install
Change the search schema and indexing.
system_update_6040 in modules/system/system.install
Add a weight column to the upload table.
system_update_6051 in modules/system/system.install
Create a signature_format column.
update_fix_d6_requirements in ./update.php
Perform Drupal 5.x to 6.x updates that are required for update.php to function properly.

Код

<?php
function db_add_field(&$ret, $table, $field, $spec, $keys_new = array()) {
  $fixnull = FALSE;
  if (!empty($spec['not null']) && !isset($spec['default'])) {
    $fixnull = TRUE;
    $spec['not null'] = FALSE;
  }
  $query = 'ALTER TABLE {'. $table .'} ADD ';
  $query .= _db_create_field_sql($field, _db_process_field($spec));
  if (count($keys_new)) {
    $query .= ', ADD '. implode(', ADD ', _db_create_keys_sql($keys_new));
  }
  $ret[] = update_sql($query);
  if (isset($spec['initial'])) {
    // All this because update_sql does not support %-placeholders.
    $sql = 'UPDATE {'. $table .'} SET '. $field .' = '. db_type_placeholder($spec['type']);
    $result = db_query($sql, $spec['initial']);
    $ret[] = array('success' => $result !== FALSE, 'query' => check_plain($sql .' ('. $spec['initial'] .')'));
  }
  if ($fixnull) {
    $spec['not null'] = TRUE;
    db_change_field($ret, $table, $field, $field, $spec);
  }
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему