Гораздо лучше справиться с этим при проектировании базы данных с помощью столбца идентификаторов - вы не упоминаете, можете ли вы изменить схему, но, надеюсь, вы сможете это сделать, поскольку запросы станут намного чище, если вам не придется управляй им сам.
Вы можете установить для свойства Identity значение on для столбца OrderNumber в студии управления SQL Server, но сценарий, который будет генерировать, клонирует таблицу с новой спецификацией, вставляет значения, которые вы уже получили при включенном Identity_Insert, удаляет оригинал table, и переименовывает временную для ее замены - это приводит к огромным накладным расходам в зависимости от того, сколько у вас строк.
Наиболее эффективный способ это сделать, вероятно:
- создать дополнительный столбец со свойством identity на
- копирование значений
- переименовать исходный столбец
- переименовать новый столбец с тем же именем, что и исходный
- удалить исходный столбец OrderNumber
Как только это сделано, это сделано, хотя - и заботится о себе. Вы не предпочли бы, чтобы ваша инструкция вставки просто сказала что-то вроде этого:
INSERT INTO SPOL (sID, oID)
SELECT sID, oID,
FROM TMPO
WHERE OrderNumber IS NOT NULL