Как вставить идентификатор автоматического увеличения, где столбец не auto_increment

Я пытаюсь вставить данные в таблицу с идентификатором int. Идентификатор уникален, и я понятия не имею, почему разработчик этого программного обеспечения не установил в этом поле значение auto_increment.

Так что нормально это сработает, потому что с auto_increment я бы исключил идентификатор, и он был бы заполнен автоматически.

Insert into [dbtest].[dbo].[tArtikelAttribute]
([kArtikel] ,[cName] ,[cValue])
Select [kArtikelAttribute], kArtikel, 'han', cHan 
from [dbtest].[dbo].[tartikel] Where cHan is not NULL

Я получаю эту ошибку

Сообщение 515, уровень 16, состояние 2, строка 2 Значение NULL нельзя вставить в столбец kArtikelAttribute dbtest.dbo.tArtikelAttribute. Столбец не допускает значений NULL. Ошибка в INSERT. Заявление закончено

Таблица [tArtikelAttribute] - это
ID (PK, int, Not Null)
kartikel (int, null)
cname (varchar (255), null)
cvalue (varchar (4000), null )

Я бы не хотел менять атрибуты полей, чтобы не мешать работе программного обеспечения. Кто-нибудь знает, как это сделать?

Благодарность


person veritaS    schedule 15.03.2015    source источник


Ответы (2)


Я не мог опубликовать это как комментарий, так как у меня недостаточно репутации для выполнения этого действия.

Попробуйте посмотреть на эту ссылку: SQL Server, как установить автоматическое приращение после создания таблицы без потери данных?

Может быть полезно.

person Posiedon    schedule 15.03.2015

Я нашел ответ, спасибо за вашу помощь с помощью row_number ()

 Insert into [eazybusiness].[dbo].[tArtikelAttribute]
  ([kArtikelAttribute], [kArtikel] ,[cName] ,[cValue])
  Select (Select max([kArtikelAttribute]) 
  from [eazybusiness].[dbo].[tArtikelAttribute]) 
      + ROW_NUMBER() OVER (ORDER BY kArtikel), kArtikel, 'han', cHan 
  from [eazybusiness].[dbo].[tartikel] Where cHan is not NULL
person veritaS    schedule 15.03.2015