Несоответствие полей таблицы и сервиса при объединении дублей

При объединении записей-дублей в таблице с использованием механизма поиска дублей может возникнуть ошибка, связанная с несоответствием количества или типа параметров хранимой процедуры.

Причина тому - разные наборы колонок в сервисе таблицы и полей в реальной таблице в БД. Такие поля могли возникнуть при удалении ошибочно созданных колонок в сервисе tbl_... или же созданы при помощи СУБД для нужд какой-то интеграции или работы хранимой процедуры. Обычно такие невидимые поля никак не проявляются и никому не мешают, но попытка объединения дублей на такой таблице порождает ошибку "wrong number or types of arguments in call to".

Чтобы всё заработало, пришлось создать такие поля в сервисе таблицы. Во избежание конфликтов, изначальные поля с данными были переименованы, а после сохранения сервиса переименованы обратно:

ALTER TABLE "tbl_Account"
RENAME COLUMN "SecretField" TO "SecretField1";

--сохраняем в TSAdmin сервис таблицы с новой колонкой SecretField

ALTER TABLE "tbl_Account" DROP COLUMN "SecretField";

ALTER TABLE "tbl_Account"
RENAME COLUMN "SecretField1" TO "SecretField";

Такой подход можно использовать и при разворачивании пакета исправлений, включающего сервисы и SQL-запросы.

Если же скрытые поля явно не нужны, их можно просто удалить одной лишь командой:

ALTER TABLE "tbl_Account" DROP COLUMN "SecretField";

После исправления таблицы стоит заново сгенерировать для неё настройки поиска дублей.

Но лучше всего сразу создавать новые поля в таблицах Terrasoft только посредством TSAdmin или TSClient, а не средствами СУБД.

Нравится

Поделиться

0 комментариев
Показать все комментарии