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

Начало » Использование СУБД » Firebird, HQbird, InterBase » Изменить тип поля
Изменить тип поля [сообщение #1934] Thu, 30 March 2023 19:38 Переход к следующему сообщению
sashaua01 в настоящее время не в онлайне  sashaua01
Сообщений: 26
Зарегистрирован: July 2022
Junior Member
Подскажите пожалуйста, есть необходимость изменить тип поля в базе.
Продумал следующий план, насколько это рабочий вариант, где могут быть подводные камни?
Есть поле
CUSTOMER_BALANCE
0. Создаем бекап
1. Создаем новое поле CUSTOMER_BALANCE_NEW.
2. Копируем содержание поля CUSTOMER_BALANCE > CUSTOMER_BALANCE_NEW.
3. Деактивируем процедуры которые используют поле.
4. Удаляем поле CUSTOMER_BALANCE
5. Переименовываем CUSTOMER_BALANCE_NEW > CUSTOMER_BALANCE
6. Правим тип поля в процедурах
7. Активируем процедуры.
8. Контрольний Backup/Restore.

[Обновления: Thu, 30 March 2023 20:12]

Известить модератора

Re: Изменить тип поля [сообщение #1935 является ответом на сообщение #1934] Thu, 30 March 2023 20:08 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 360
Зарегистрирован: June 2022
Senior Member
Такое на тесте проверять нужно. По идее должно сработать.
Re: Изменить тип поля [сообщение #1936 является ответом на сообщение #1934] Thu, 30 March 2023 22:21 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Проверить использование поля в триггерах и индексах. В остальном рабочий вариант
Re: Изменить тип поля [сообщение #1937 является ответом на сообщение #1934] Thu, 30 March 2023 23:36 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 150
Зарегистрирован: August 2022
Senior Member
После устранения зависимостей (индексы, процедуры и функции, триггеры, представления), можно alter table alter column попробовать. Коли получится, то и хорошо, не пришлось гонять данные. Потом создать индексы и подкрутить PSQL, если потребуется.
Re: Изменить тип поля [сообщение #1939 является ответом на сообщение #1937] Fri, 31 March 2023 12:31 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Кстати, может кто знает, существует ли сейчас способ сменить callate для текстового поля без пересоздания?
На древних версиях такое бьіло возможно прямьім редактированием системньіх таблиц
Re: Изменить тип поля [сообщение #1971 является ответом на сообщение #1939] Mon, 03 April 2023 13:52 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
ChatGPT отвечает
В целом, ваш план выглядит рабочим и безопасным, но есть несколько моментов, которые стоит учитывать:

При копировании содержимого из поля CUSTOMER_BALANCE в CUSTOMER_BALANCE_NEW, убедитесь, что типы данных обоих полей совпадают, чтобы избежать потери данных.

Перед удалением поля CUSTOMER_BALANCE убедитесь, что оно больше не используется в других таблицах или процедурах.

При правке типа поля в процедурах, убедитесь, что они работают корректно с новым типом данных.

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

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

Наконец, убедитесь, что вы имеете достаточные права на изменение схемы базы данных, и что процедуры изменения соответствуют вашим корпоративным стандартам и процедурам безопасности.
Re: Изменить тип поля [сообщение #1973 является ответом на сообщение #1971] Mon, 03 April 2023 14:26 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
Не забудь выполнить первый пункт: "убедитесь, что типы данных обоих полей совпадают".
Re: Изменить тип поля [сообщение #1974 является ответом на сообщение #1973] Mon, 03 April 2023 14:42 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. Не забудь выполнить первый пункт: "убедитесь, что типы данных обоих полей совпадают".
Очень тяжело менять, ничего не меняя, но мы будем! ©

зы: зачем shavluk запостил этот бред сюда, мне лично непонятно.

[Обновления: Mon, 03 April 2023 15:04]

Известить модератора

Re: Изменить тип поля [сообщение #2117 является ответом на сообщение #1974] Wed, 19 April 2023 00:03 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
похоже, придется ввести запрет на цитирование тут информации от псевдо-ИИ.
Re: Изменить тип поля [сообщение #2119 является ответом на сообщение #2117] Wed, 19 April 2023 00:45 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
За что, он прикольный. Иногда от некоторых живых участников старого форума не отличить.
Re: Изменить тип поля [сообщение #2388 является ответом на сообщение #2119] Thu, 25 May 2023 20:05 Переход к предыдущему сообщениюПереход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
3. деактивируем не только процедуры, триггеры, вью, индексы.
5. не очень хорошо сработало у меня, поэтому создал новое поле со старым именем и опять скопировал данные.
5.1. Сместить поле в новую позицию.
Re: Изменить тип поля [сообщение #2391 является ответом на сообщение #2388] Fri, 26 May 2023 12:46 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
svd
5. не очень хорошо сработало у меня
это как?
Re: Изменить тип поля [сообщение #2396 является ответом на сообщение #2391] Fri, 26 May 2023 17:24 Переход к предыдущему сообщениюПереход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
При тесте на локальном компе было все нормально. Несколько апдейтов у клиентов прошло тоже нормально. Но потом появился клиент, у которого вываливалась ошибка. Поэтому сходу сделал такое решение и потом именно этот скрипт отрабатывал без проблем.
У клиента было какое-то повреждение в базе, которое лечилось бэкапом/рестором.
Re: Изменить тип поля [сообщение #2397 является ответом на сообщение #2396] Fri, 26 May 2023 17:59 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
при активных коннектах небось тип меняли?
Предыдущая тема: FireBird 4.0.2 непонятное поведение транзакций
Следующая тема: FB 4 Сервисы и кириллица
Переход к форуму:
  


Текущее время: Thu Nov 21 20:31:15 GMT+3 2024

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