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

Вот таблица. Мне нужно, чтобы идентификатор увеличивался автоматически.

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.

1

Решение

Если у вас есть IDENTITY столбец, то ему автоматически присваивается значение.

Не включайте его в INSERT заявление:

INSERT INTO dbo.Atable(CaseNo)
VALUES(@CaseNo);
3

Другие решения

IDENTITY столбец автоматически увеличивается. Вам просто нужно указать начальное значение и при чем семя он будет увеличиваться при создании таблицы. Вот и все.

Таким образом, вы не можете вставить значения для IDENTITY столбец, как SQL server обрабатывает это для вас.

ID int identity(1, 2) — здесь (1 — начальное значение, 2 — автоматическое увеличение на 2)

Так это будет выглядеть примерно так.

1

3

5

7

Для получения дополнительной информации, посмотрите на Вот

0

По вопросам рекламы [email protected]