powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEScript, не верный SQL дропа первичного ключа на Firebird 3
8 сообщений из 8, страница 1 из 1
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862583
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени.

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

В результирующем скрипте не верно генерится SQL дропа первичного ключа.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/******************************************************************************/
/****                   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:
Код: plsql
1.
2.
ibec_CompareMetadata(MasterDbMetadataFilename, TargetDbMetadataFilename, MetadataUpdateScriptFilename,
'SafeDatatypeConversion; IgnoreIBEObjects; ServerVersion=FB30', NULL);



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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
/******************************************************************************/
/****                   Dropping primary key constraints                   ****/
/******************************************************************************/
SET TERM ; ^

RECONNECT;

ALTER TABLE FIRMACCOUNTS DROP CONSTRAINT INTEG_55;
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862619
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что именно сравнивается, скрипты или базы?
У меня на базах не воспроизводится.
DELETE может возникнуть только если имя ограничения пустое. В базах вроде такого быть не может, а вот в скриптах - запросто.
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862662
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА что именно сравнивается, скрипты или базы?
Сравниваются скрипты.

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

авторВ базах вроде такого быть не может, а вот в скриптах - запросто.
Напрашивается вопрос. Что в IBEскрипте лучше сравнивать, непосредственно базы или скрипты? Вроде, где-то тут читал, что скрипты. Да и сами метаданные от баз в файлах опосля остаются. Удобно самому сравнить в случае необходимости.
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862690
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichНапрашивается вопрос. Что в IBEскрипте лучше сравнивать, непосредственно базы или скрипты? Вроде, где-то тут читал, что скрипты.

Много раз уже говорил, что для генерации корректного скрипта синхронизации сравнивать нужно базы. Только в них есть вся необходимая информация.
А в скриптах... ну, сам видишь. Как дропать ключ, имя которого неизвестно?
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862694
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок. Спасибо. Перейду на сравнение непосредственно самих баз.

О результате сообщу.
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39862898
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторО результате сообщу.
Перешел на сравнение БД - полет нормальный. PK дропаются как положено.



Однако обнаружил другую проблему.
Эталон.
Код: plsql
1.
2.
3.
4.
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);


БД назначения.
Код: plsql
1.
2.
3.
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 теряется.
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39865178
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik EmailovichВ результате таблица TMP_JOIN_TABLE дропается и создается как положено, а вот индекс ITMPJOINTABLE теряется.

Исправил.
...
Рейтинг: 0 / 0
IBEScript, не верный SQL дропа первичного ключа на Firebird 3
    #39866777
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Все в порядке.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBEScript, не верный SQL дропа первичного ключа на Firebird 3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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