web-dev-qa-db-ja.com

モジュールのスキーマに列を追加した後、新しい列もhook_schema内に配置する必要がありますか?

独自のスキーマを実装する独自のモジュールがあります。ここで、スキーマによって提供されるテーブルに列を追加します。これは、hook_update_N()およびdb_add_field()を介して実行する予定です。

私の質問は、基本的にこの質問のタイトルが何であるかです。スキーマに新しい列を追加した後、新しい列またをモジュールのhook_schema()実装内に配置する必要がありますか?例(mynewcolumnという名前の列をモジュールmymoduleのスキーマに追加します):

_function mymodule_update_6000() {
  $ret = array();

  db_add_field($ret, 'mymodule', 'mynewcolumn', array(
    'description' => t('This is my new column'), 
    'type' => 'text',
    'size' => 'big',
    'not null' => FALSE
  ));

  return $ret;
}
_

この時点で、mynewcolumnmymodule_schema()内に配置しますか?または、mymodule_update_6000()は適切なインストールとアンインストールを完全に処理しますか?

1
jerdiggity

hook_update_N()はモジュールの更新時にのみ使用され、hook_schema()hook_install()はモジュールのインストール時にのみ使用されます。モジュールをインストールするユーザーがいるため、データベースフィールドもhook_schema()に追加する必要があります。

2
kiamlaluno