Вот таблица. Мне нужно, чтобы идентификатор увеличивался автоматически.Невозможно вставить значение 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.
Если я detele идентификатор в вставки, я получаю: Явное значение должно быть задано для столбца идентификаторов в таблице «ATable» либо когда IDENTITY_INSERT установлен в положение ON или когда пользователь репликации вставляется в столбец идентичности NOT FOR REPLICATION. –
Существует исключение, если 'IDENTITY_INSERT'' ON'. Однако это функция специального назначения, используемая, когда вы хотите скопировать данные в другую таблицу, не затрагивая столбец идентификатора. –