Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер баз и вычисляемое поле / 9 сообщений из 9, страница 1 из 1
12.12.2015, 10:15
    #39126296
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
FB 2.5. Поле в таблице:
Код: sql
1.
2.
    FLAT COMPUTED BY (IIF(NUMBER_FLAT IS NOT NULL, NUMBER_FLAT, '')
|| IIF(NUMBER_PART IS NOT NULL, IIF(NUMBER_FLAT IS NOT NULL, '/', '') || NUMBER_PART, '')),


Компарер генерирует для него скрипт изменения:
Код: sql
1.
2.
3.
ALTER TABLE DIR$ABONENT$ABONENT ALTER COLUMN FLAT
  TYPE COMPUTED BY (IIF(NUMBER_FLAT IS NOT NULL, NUMBER_FLAT, '')
|| IIF(NUMBER_PART IS NOT NULL, IIF(NUMBER_FLAT IS NOT NULL, '/', '') || NUMBER_PART, ''));


Проблема 1: Скрипт нерабочий - надо убирать слово TYPE.
Проблема 2: Структуры таблицы одинаковые. Как выяснить, зачем компарер продолжает генерировать скрипт изменения?
...
Рейтинг: 0 / 0
12.12.2015, 14:32
    #39126376
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
1. Поправил.
2. Скорее всего, в RDB$FIELDS отличаются записи этого поля. Например, тип. Поэтому компарер считает поле изменившимся.
...
Рейтинг: 0 / 0
12.12.2015, 15:06
    #39126392
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
IBExpert,

После альтера поля, компарер все равно делает альтер этого поля. Я не знаю, что надо сделать, чтобы он перестал это делать.
...
Рейтинг: 0 / 0
12.12.2015, 16:09
    #39126409
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
Залил свежий билд, там должно быть видно, если разница в типе (он в комментарии после имени поля).
...
Рейтинг: 0 / 0
13.12.2015, 06:21
    #39126567
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
IBExpert,

Спасибо, разобрался. В этих вычисляемых полях были использованы другие вычисляемые поля, поменявшие размер. В итоге в оригинальной таблице были устаревшие (неверные) длины строк, что и вызывало постоянный альтер.
...
Рейтинг: 0 / 0
13.12.2015, 06:48
    #39126570
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
IBExpertЗалил свежий билд, там должно быть видно, если разница в типе (он в комментарии после имени поля).
Если тип NUMERIC(18,2), то в этом комментарии пишется BIGINT, что вводит в заблуждение. Есть ли возможность вывести полноценный тип?
...
Рейтинг: 0 / 0
13.12.2015, 08:26
    #39126579
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
CyberMaxЕсли тип NUMERIC(18,2), то в этом комментарии пишется BIGINT, что вводит в заблуждение. Есть ли возможность вывести полноценный тип?

Полноценный тип там выводится:
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE TABLE_A (
    NEW_FIELD INTEGER,
    CMP_FIELD /* BIGINT */ COMPUTED BY (1+1),
    DEF_FLD VARCHAR(100) DEFAULT 'бла-бла',
    CMP_FIELD2 /* NUMERIC(18,2) */ COMPUTED BY (1+2));
...
Рейтинг: 0 / 0
13.12.2015, 08:51
    #39126583
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
IBExpertПолноценный тип там выводится:
Код: sql
1.
2.
3.
4.
5.
6.
    PAYMENT /* BIGINT */ COMPUTED BY ((SELECT
    R.AMOUNT_RECEIPT
FROM 
    BAT$RECEIPT$RECEIPT R
WHERE
    R.ID = BAT$FSA$LINE.ID_RECEIPT)),


На самом деле там NUMERIC(18,2).
...
Рейтинг: 0 / 0
13.12.2015, 09:19
    #39126589
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компарер баз и вычисляемое поле
CyberMaxНа самом деле там NUMERIC(18,2).

То, что "на самом деле", лежит в RDB$FIELDS. Компарер туда смотрит, а не на выражение вычисляемого поля.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер баз и вычисляемое поле / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]