繁体   English   中英

无法为表中的标识列插入显式值

[英]Cannot insert explicit value for identity column in table

码:

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设置为OFF时,无法为表“客户”中的身份列插入显式值

ALTER PROCEDURE [dbo].[AddUpdateCustomer]
      @CustomerID  INT           OUTPUT,
      @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]
           ([CompanyName]
           ,[ContactName])
        VALUES
           (@CompanyName
           ,@ContactName)
        SET @CustomerID = SCOPE_IDENTITY()
    END

    SELECT [CustomerID]
          ,[CompanyName]
          ,[ContactName]
    FROM Customers  
    WHERE [CustomerID] = @CustomerID
END

您不能在标识列中显式插入数据。 要将数据明确插入身份列中,您需要将IDENTITY_INSERT设置为ON。您可以使用以下方法进行操作。

 SET IDENTITY_INSERT Database.table_name ON

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM