powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер баз и вычисляемое поле
9 сообщений из 9, страница 1 из 1
Компарер баз и вычисляемое поле
    #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
Компарер баз и вычисляемое поле
    #39126376
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Поправил.
2. Скорее всего, в RDB$FIELDS отличаются записи этого поля. Например, тип. Поэтому компарер считает поле изменившимся.
...
Рейтинг: 0 / 0
Компарер баз и вычисляемое поле
    #39126392
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

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

Спасибо, разобрался. В этих вычисляемых полях были использованы другие вычисляемые поля, поменявшие размер. В итоге в оригинальной таблице были устаревшие (неверные) длины строк, что и вызывало постоянный альтер.
...
Рейтинг: 0 / 0
Компарер баз и вычисляемое поле
    #39126570
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertЗалил свежий билд, там должно быть видно, если разница в типе (он в комментарии после имени поля).
Если тип NUMERIC(18,2), то в этом комментарии пишется BIGINT, что вводит в заблуждение. Есть ли возможность вывести полноценный тип?
...
Рейтинг: 0 / 0
Компарер баз и вычисляемое поле
    #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
Компарер баз и вычисляемое поле
    #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
Компарер баз и вычисляемое поле
    #39126589
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxНа самом деле там NUMERIC(18,2).

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


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