这是表格。我需要id自动增加。
CREATE TABLE [dbo].[Atable](
[id] INT NOT NULL IDENTITY(1, 1),
[CaseNo] [int] NULL,
CONSTRAINT [AtablePK] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Atable ON
这是插入程序:
CREATE PROCEDURE dbo.INSERT_Atable
@id INT = NULL OUTPUT
,@CaseNo INT = NULL
AS
SET NOCOUNT OFF;
SELECT @id = @@IDENTITY
INSERT INTO dbo.Atable(id,CaseNo) VALUES(@id ,@CaseNo)
这是对程序的调用:
SET IDENTITY_INSERT dbo.INSERT_Atable ON
EXEC dbo.Atable @CaseNo = '2'
为什么我收到此错误?:
Cannot insert the value NULL into column 'id', table 'dbo.Atable'; column does not allow nulls. INSERT fails.
答案 0 :(得分:3)
如果您有IDENTITY
列,则会自动为其分配值。
请勿将其包含在INSERT
声明中:
INSERT INTO dbo.Atable(CaseNo)
VALUES(@CaseNo);
答案 1 :(得分:0)
IDENTITY
列会自动递增。您只需要指定起始值,在种子时,它将在创建表时增加。就是这样。
因此,您无法为IDENTITY
列插入值,因为SQL server
会为您处理。
ID int identity(1, 2)
- 这里(1是起始值,2是自动递增2)
所以它看起来像。
1
3
5
7
有关详细信息,请查看here