Sybase 12,5Alter exisitng INT столбец идентичности в Sybase
Я существующая таблица в производстве, что нужно это PK INT столбец может быть изменен таким образом, что она автоматически заполняется - при создании таблицы было бы идеально имели столбец идентификатора, созданный как идентификатор. Этот столбец идентификатора является внешним ключом в нескольких других таблицах, поэтому удаление таблицы и запуск снова не является вариантом. Проблема в том, что я не могу установить PK как идентификатор, а создание столбца temp с текущими значениями и копирование их в новый столбец IDENTITY также не выполняется.
Поскольку столбец идентификатора уже заполнен, я не могу просто превратить этот столбец в IDENTITY (по крайней мере, я не нашел SQL, который сделает это).
Я создал копию таблицы с дополнительным столбцом, содержащим текущее значение PK (split_id_tmp).
CREATE TABLE division_tmp
(
division_id int IDENTITY NOT NULL
division_id_tmp int,
description varchar(255) NOT NULL,
is_active tinyint DEFAULT 1 NOT NULL,
)
Когда я пытаюсь ввести datascript из исходной таблицы
INSERT INTO division_tmp
(description,is_active,division_id_tmp,division_id)
VALUES
('TEST',1,36,34)
Я получаю следующее сообщение об ошибке:
Error: Explicit value specified for identity field in table 'division_tmp'
when 'SET IDENTITY_UPDATE' is OFF.
Если я запускаю заявление:
SET IDENTITY_INSERT division_tmp OFF
Заявление выполняется без int, но попытки вставить результат datascript в ту же ошибку, что и выше. Если я запускаю заявление
SET IDENTITY_INSERT ac_division_lookup_awd ON
Я получаю ошибку
Error: Unable to 'SET IDENTITY_INSERT' for table '**division_tmp**' because
IDENTITY_INSERT or IDENTITY_UPDATE is already ON for the table '**division**' in
database 'preserve'.
Я не могу быть первым человеком, который пережил эту проблему? Любые идеи о том, где я ошибаюсь?
Thanks
Или, если честно, у меня есть столбец A, который является int PK. Мне нужно создать столбец B, сделать его столбцом идентификации и заполнить его значениями A. –
Существует еще один вариант: это всего около 7 пользователей, которые будут вставлять в эту таблицу, вероятность того, что они будут выполнять одновременную Вставка небольшая. Я могу удалить личность, восстановить PK и вставить select max (division_id) + 1. Это грязное исправление, но попытка перегруппировки ключей по всей схеме намного более рискованна. –