Невозможно вставить явное значение для столбца идентификаторов в таблице

Код:

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[AddUpdateCustomer]
      @CustomerID NCHAR(5),
      @ContactName NVARCHAR(30),
      @CompanyName NVARCHAR(40)
AS
BEGIN
      SET NOCOUNT ON;
    IF EXISTS(SELECT * FROM Customers WHERE CustomerID = @CustomerID)
    BEGIN
            UPDATE [Customers]
            SET [CompanyName] = @CompanyName
               ,[ContactName] = @ContactName
            WHERE CustomerID = @CustomerID
    END
    ELSE
    BEGIN
            INSERT INTO [Customers]
           ([CustomerID]
           ,[CompanyName]
           ,[ContactName])
        VALUES
           (@CustomerID
           ,@CompanyName
           ,@ContactName)
    END

    SELECT [CustomerID]
          ,[CompanyName]
          ,[ContactName]
      FROM Customers         
END

Когда я вставляю данные в текстовое поле, возникает эта ошибка:

Невозможно вставить явное значение для столбца идентификаторов в таблицу «Клиенты», если для IDENTITY_INSERT установлено значение ВЫКЛ.


person AssenKhan    schedule 17.05.2017    source источник
comment
Так в чем конкретно ваш вопрос? Вы можете либо установить IDENTITY_INSERT в положение ON, либо не вставлять идентификаторы.   -  person HoneyBadger    schedule 17.05.2017
comment
CustomerID не является nchar, если это столбец идентификаторов. Вы знаете, что такое идентичность?   -  person Crowcoder    schedule 17.05.2017


Ответы (2)


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

 SET IDENTITY_INSERT Database.table_name ON
person Simran    schedule 17.05.2017
comment
Я не верю, что OP на самом деле хочет этого, но вы должны хотя бы упомянуть, что вам следует снова отключить его после этого. - person Crowcoder; 17.05.2017

person    schedule
comment
Не забудьте проверить, что CustomerID был обновлен на стороне клиента. - person Mikhail Lobanov; 17.05.2017