Sybase - измените тип данных столбца таблицы в столбце IDENTITY, который является определяемым пользователем типом данных - PullRequest
0 голосов
/ 26 октября 2011

Я довольно хорошо разбираюсь в Oracle, но я изо всех сил пытался найти достойное решение проблемы, с которой я столкнулся в Sybase.

У меня есть таблица, в которой есть столбец IDENTITY, который также является «идентификатором» пользовательского типа данных (UDD), который является числовым (10,0). Я решил заменить UDD на собственный тип данных, но при этом я получаю сообщение об ошибке.

Я обнаружил, что единственный способ сделать это:

  • Переименуйте исходную таблицу (от table_a до table_a_backup), используя процедуру sp_rename
  • Восстановить исходную таблицу (table_a), но использовать собственные типы данных
  • Скопируйте содержимое резервной таблицы в оригинал (т.е. вставьте в таблицу_ выберите * из таблицы_b)

Это работает, однако у меня более 10 миллионов записей, и в конце концов заканчивается сегмент журнала и останавливается (я больше не могу увеличивать сегмент из-за физических требований).

Есть ли у кого-нибудь решение, предпочтительно не решение, которое включало бы обработку записей как что-либо, кроме одного большого набора?

Приветствия

JLove

1 Ответ

0 голосов
/ 27 октября 2011

концептуально, что-то вроде этого работает (в Sybase ASE 12.5.x) ...

  1. сделать «изменить столбец удаления таблицы» в вашем текущем столбце идентификатора
  2. сделать "Изменить таблицу добавить столбец" stmt, чтобы добавить новый столбец (с собственным типом данных) с атрибутом IDENTITY

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

...