Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
Tofik Emailovich
Member

Откуда:
Сообщений: 45
Доброго времени.

Firebird 3.0.4
IBEScript, 2019.4.27.1, последний, который можно скачать.

В результирующем скрипте не верно генерится SQL дропа первичного ключа.
/******************************************************************************/
/****                   Dropping primary key constraints                   ****/
/******************************************************************************/
SET TERM ; ^

RECONNECT;

Delete from Rdb$Relation_Constraints
where Rdb$Relation_Name = 'FIRMACCOUNTS'
and Rdb$Constraint_Type = 'PRIMARY KEY';

Для FB3 соответственно - DELETE operation is not allowed for system table RDB$RELATION_CONSTRAINTS.

Параметры вызова ibec_CompareMetadata:
ibec_CompareMetadata(MasterDbMetadataFilename, TargetDbMetadataFilename, MetadataUpdateScriptFilename,
'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB30', NULL);


В Эксперте все ок.

/******************************************************************************/
/****                   Dropping primary key constraints                   ****/
/******************************************************************************/
SET TERM ; ^

RECONNECT;

ALTER TABLE FIRMACCOUNTS DROP CONSTRAINT INTEG_55;
17 сен 19, 09:21    [21972143]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
А что именно сравнивается, скрипты или базы?
У меня на базах не воспроизводится.
DELETE может возникнуть только если имя ограничения пустое. В базах вроде такого быть не может, а вот в скриптах - запросто.
17 сен 19, 10:29    [21972214]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
Tofik Emailovich
Member

Откуда:
Сообщений: 45
автор
А что именно сравнивается, скрипты или базы?

Сравниваются скрипты.

Явного названия у первичного ключа нет. Создаются непосредственно в таблице:
CREATE TABLE ABC (
ID INTEGER,
PRIMARY KEY (ID));

автор
В базах вроде такого быть не может, а вот в скриптах - запросто.

Напрашивается вопрос. Что в IBEскрипте лучше сравнивать, непосредственно базы или скрипты? Вроде, где-то тут читал, что скрипты. Да и сами метаданные от баз в файлах опосля остаются. Удобно самому сравнить в случае необходимости.
17 сен 19, 11:09    [21972275]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Tofik Emailovich
Напрашивается вопрос. Что в IBEскрипте лучше сравнивать, непосредственно базы или скрипты? Вроде, где-то тут читал, что скрипты.


Много раз уже говорил, что для генерации корректного скрипта синхронизации сравнивать нужно базы. Только в них есть вся необходимая информация.
А в скриптах... ну, сам видишь. Как дропать ключ, имя которого неизвестно?
17 сен 19, 11:27    [21972308]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
Tofik Emailovich
Member

Откуда:
Сообщений: 45
Ок. Спасибо. Перейду на сравнение непосредственно самих баз.

О результате сообщу.
17 сен 19, 11:31    [21972317]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
Tofik Emailovich
Member

Откуда:
Сообщений: 45
автор
О результате сообщу.

Перешел на сравнение БД - полет нормальный. PK дропаются как положено.



Однако обнаружил другую проблему.
Эталон.
CREATE GLOBAL TEMPORARY TABLE TMP_JOIN_TABLE (
    ID_TMP	ID_NODEFAULT_TYPE)
ON COMMIT PRESERVE ROWS;
CREATE UNIQUE INDEX ITMPJOINTABLE ON TMP_JOIN_TABLE (ID_TMP);

БД назначения.
CREATE GLOBAL TEMPORARY TABLE TMP_JOIN_TABLE (
    ID_TMP	ID_NODEFAULT_TYPE);
CREATE UNIQUE INDEX ITMPJOINTABLE ON TMP_JOIN_TABLE (ID_TMP);

В результате таблица TMP_JOIN_TABLE дропается и создается как положено, а вот индекс ITMPJOINTABLE теряется.
17 сен 19, 14:49    [21972598]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Tofik Emailovich
В результате таблица TMP_JOIN_TABLE дропается и создается как положено, а вот индекс ITMPJOINTABLE теряется.


Исправил.
22 сен 19, 11:01    [21976180]     Ответить | Цитировать Сообщить модератору
 Re: IBEScript, не верный SQL дропа первичного ключа на Firebird 3  [new]
Tofik Emailovich
Member

Откуда:
Сообщений: 45
Спасибо. Все в порядке.
25 сен 19, 11:59    [21978781]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить