Докомпиляция словаря Назад В начало Вперед

Докомпиляция словаря - изменение структуры существующей базы данных. Возможные действия:

Для контроля соответствия приложения и БД используется контрольная сумма (КС) словаря. Она должна соответствовать КС словаря, на котором проводилась сборка приложения.

Пользователи приложения (Галактики) могут свободно вносить в структуру БД изменения, не влияющие на работу приложения. К ним относятся:

КС словаря при этом не меняется.

Прочие изменения (удалить прикладную таблицу, изменить или удалить поле в прикладной таблице) должны предваряться оператором alter dictionary:

<операторы-докомпиляции-словаря> = <изменить-словарь>
  | <создать-таблицу> | <изменить-таблицу> | <удалить-таблицу>

<изменить-словарь> - оператор изменения словаря. По нему пересчитывается КС словаря. Оператор alter dictionary в сочетании с параметром System.fullSQL кофигурационного файла позволяет вносить в структуру БД любые изменения.

<изменить-словарь> = alter dictionary;

Категорически не рекомендуется пользователям использовать alter dictionary, т.к. при этом летит КС словаря. Соответственно, становится невозможен контроль соответствия приложения и БД. Отсюда возможны (и были реально) крупные неприятности. Теоретически - вплоть до полной потери БД.

<создать-таблицу> - создать новую таблицу (create table), см. "Оператор описания таблицы. ".

<изменить-таблицу> - изменить существующую таблицу. После указания операции (добавить, удалить, изменить) в круглых скобках приводится описание полей или индексов аналогично оператору create table. Для удаления достаточно указать имя поля или индекса, полное описание не требуется.

<изменить-таблицу> = alter table
  {<оператор-модификации> ( <описание-полей-таблицы> )}
  {<оператор-модификации> index (<описание-индекса>)} ;

<оператор-модификации> - операция изменения полей или индексов таблицы:

<оператор-модификации> = add | modify | delete

add - добавить описание полей или индексов.

modify - изменить описание полей или индексов.

delete - удалить описание полей или индексов.

<описание-полей-таблицы> - описание поля. Синтаксис аналогичен оператору create table, см. "Оператор описания таблицы. ". При удалении достаточно указать имя.

<описание-индекса> - описание индекса. Синтаксис аналогичен оператору create table, см. "Описание индексов таблицы. Атрибуты индексов. ". При удалении достаточно указать имя.

<удалить-таблицу> - удалить существующую таблицу.

<удалить-таблицу> = drop table <имя-таблицы>;

<имя-таблицы> - имя удаляемой таблицы.

Пример

alter table SmpleTable
  modify
(
  opers: word "кол-во операций за день" 
)
  add
(
  pricen  : double "цена для нал.уч.",
  vpricen : double "цена для нал.уч. в валюте"
)
  delete
(
  MiddleName
)

  add index (iByOpers = opers)
  delete index (iByMiddleName)
;