SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » TIME,TIMESTAMP check для мигрирующих с FB2.5 на 3.0 и выше
TIME,TIMESTAMP check для мигрирующих с FB2.5 на 3.0 и выше [сообщение #6287] Fri, 20 February 2026 15:38
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 54
Зарегистрирован: August 2022
Member
Кто таки собрался переходить со FB 2.5  (знаю-знаю про гуано мамонта, но легаси - оно такое - на днях пришлось перетаскивать БД с 2.5 на 5.0).

1) Поставить себе FB 2.5.9
2) выполнить скрипт - покажет проблемные домены, триггера, процедуры, параметры процедур, поля таблиц

/* проблемнае домены*/
select 'DOMAIN' AS OBJECT_TYPE,rdb$fields.rdb$field_name AS NAME
from rdb$fields
where rdb$fields.RDB$SYSTEM_FLAG=0 and not(rdb$fields.RDB$FIELD_NAME starting with 'RDB$') and
      (
        (rdb$fields.RDB$DEFAULT_SOURCE containing 'CURRENT_TIME') or
        (rdb$fields.RDB$DEFAULT_SOURCE containing 'CURRENT_TIMESTAMP')
      )
/*  проблемные триггера */
union
select 'TRIGGER' AS OBJECT_TYPE,
       iif(coalesce(rdb$triggers.rdb$relation_name,'')='','',trim(coalesce(rdb$triggers.rdb$relation_name,''))||'.')||rdb$triggers.rdb$trigger_name AS NAME
from rdb$triggers
where rdb$triggers.rdb$system_flag=0 and not(rdb$triggers.rdb$trigger_name starting with 'RDB$') and
     (
       (rdb$triggers.rdb$trigger_source containing 'CURRENT_TIME') or
       (rdb$triggers.rdb$trigger_source containing 'CURRENT_TIMESTAMP')
     )
/*  проблемные процедуры */
union
select 'PROCEDURE' AS OBJECT_TYPE,rdb$procedures.rdb$procedure_name AS NAME
from rdb$procedures
where rdb$procedures.rdb$system_flag=0 and not(rdb$procedures.rdb$procedure_name starting with 'RDB$') and
     (
       (rdb$procedures.rdb$procedure_source containing 'CURRENT_TIME') or
       (rdb$procedures.rdb$procedure_source containing 'CURRENT_TIMESTAMP')
     )
/*  проблемные параметры процедур */
union
select 'PROCEDURE PARAMS' AS OBJECT_TYPE,rdb$procedure_parameters.rdb$procedure_name||'.'||rdb$procedure_parameters.rdb$parameter_name  AS NAME
from rdb$procedure_parameters
where (
       (rdb$procedure_parameters.rdb$default_source containing 'CURRENT_TIME') or
       (rdb$procedure_parameters.rdb$default_source containing 'CURRENT_TIMESTAMP')
     )
/*  проблемные поля таблиц */
union
select 'TABLE FIELDS' AS OBJECT_TYPE,
       trim(rdb$relation_fields.rdb$relation_name)||'.'||rdb$relation_fields.rdb$field_name AS NAME
from rdb$relation_fields
where not(rdb$relation_fields.rdb$relation_name starting with 'RDB$') and
     (
       (rdb$relation_fields.rdb$default_source containing 'CURRENT_TIME') or
       (rdb$relation_fields.rdb$default_source containing 'CURRENT_TIMESTAMP')
     )
3) Поменять все CURRENT_TIME -> LOCALTIME, CURRENT_TIMESTAMP -> LOCALTIMESTAMP.

P.S. Что-то форум если не мертв, то едва-едва дышит....
Предыдущая тема: in autonomous transaction в 5-ой версии
Следующая тема: Полнотекстовый поиск для Firebird
Переход к форуму:
  


Текущее время: Sat Feb 21 02:11:05 GMT+3 2026

Общее время, затраченное на создание страницы: 0.00597 секунд