C# 无法在表中插入标识列的显式值
代码: 在文本框中插入数据时,会发生以下错误: 当identity\u insert设置为OFF时,无法在表“Customers”中插入identity列的显式值C# 无法在表中插入标识列的显式值,c#,sql,asp.net,sql-server,database,C#,Sql,Asp.net,Sql Server,Database,代码: 在文本框中插入数据时,会发生以下错误: 当identity\u insert设置为OFF时,无法在表“Customers”中插入identity列的显式值 对于标识列,不能显式插入数据。要显式地将数据插入标识列,您需要将标识\u insert设置为ON。您可以使用以下命令来完成此操作 SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[AddUpdateCustomer] @Cus
对于标识列,不能显式插入数据。要显式地将数据插入标识列,您需要将标识\u insert设置为ON。您可以使用以下命令来完成此操作
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
对于标识列,不能显式插入数据。要显式地将数据插入标识列,您需要将标识\u insert设置为ON。您可以使用以下命令来完成此操作
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\u INSERT
设置为ON,也可以不插入ID。如果CustomerID是标识列,则它不是nchar。你知道“身份”是什么意思吗?那么你的问题到底是什么?您可以将IDENTITY\u INSERT
设置为ON,也可以不插入ID。如果CustomerID是标识列,则它不是nchar。你知道“身份”是什么意思吗?我不相信这是OP真正想要的,但你至少应该提到你应该在事后关掉它。我不相信这是OP真正想要的,但您至少应该提到,您应该在之后将其关闭。不要忘记检查客户端是否已刷新CustomerID
。不要忘记检查客户端是否已刷新CustomerID
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