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

В результирующем скрипте при создании временной таблицы теряется первичный ключ.

Эталон:
CREATE GLOBAL TEMPORARY TABLE TEMP (
ID INTEGER NOT NULL,
CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID))
ON COMMIT DELETE ROWS;

В таргете такой таблицы нет.

Скрипт:
CREATE GLOBAL TEMPORARY TABLE TEMP (
ID INTEGER NOT NULL)
ON COMMIT DELETE ROWS;

И далее в скрипте PK_TEMP_ID отсутствует.

Компарер запускаю непосредственно из эксперта, версия 2020.7.16.2.
...
Рейтинг: 0 / 0
Компарер и временные таблицы
    #39983694
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вынужден признать свою ошибку. В моем случае ПК по двум полям, а пример я привел по одному. ПК по одному полю обрабатывается нормально.

Ниже поправка:

Эталон:
CREATE GLOBAL TEMPORARY TABLE TEMP (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL,
CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID1, ID2))
ON COMMIT DELETE ROWS;

В таргете такой таблицы нет.

Скрипт:
CREATE GLOBAL TEMPORARY TABLE TEMP (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL)
ON COMMIT DELETE ROWS;

И далее в скрипте PK_TEMP_ID отсутствует.
...
Рейтинг: 0 / 0
Компарер и временные таблицы
    #39983741
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tofik Emailovich

И далее в скрипте PK_TEMP_ID отсутствует.


А у меня присутствует:

Код: plsql
1.
2.
3.
4.
5.
6.
/******************************************************************************/
/****                   Creating primary key constraints                   ****/
/******************************************************************************/
RECONNECT;

ALTER TABLE TABLE1 ADD CONSTRAINT PK_TABLE1_ID PRIMARY KEY (ID1, ID2);
...
Рейтинг: 0 / 0
Компарер и временные таблицы
    #39984371
Tofik Emailovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался в чем засада. В предыдущем примере в таргете таблица отсутствовала, а оная все же есть, и по факту меняется ее тип.

Эталон
Код: sql
1.
2.
3.
4.
5.
CREATE GLOBAL TEMPORARY TABLE TEMP (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL,
CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID1, ID2))
ON COMMIT DELETE ROWS;


Таргет
Код: sql
1.
2.
3.
4.
CREATE TABLE TEMP (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL,
CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID1, ID2));


Результат
Код: sql
1.
2.
3.
4.
5.
6.
DROP TABLE TEMPTAX2;

CREATE GLOBAL TEMPORARY TABLE TEMP (
    ID1 INTEGER NOT NULL,
    ID2 INTEGER NOT NULL)
 ON COMMIT DELETE ROWS;



Если же в таргете ПК по одному полю (или отсутствует вообще, соответственно в результате дроп ПК будет отсутствовать), то все в порядке.
Таргет
Код: sql
1.
2.
3.
4.
CREATE TABLE TEMP (
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL,
CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID1));


Результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER TABLE TEMP DROP CONSTRAINT PK_TEMP_ID;

DROP TABLE TEMP;

CREATE GLOBAL TEMPORARY TABLE TEMP (
    ID1 INTEGER NOT NULL,
    ID2 INTEGER NOT NULL)
 ON COMMIT DELETE ROWS;

ALTER TABLE TEMP ADD CONSTRAINT PK_TEMP_ID PRIMARY KEY (ID1, ID2);
...
Рейтинг: 0 / 0
Компарер и временные таблицы
    #39984590
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Компарер и временные таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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