Проблема с кодом, который увеличивает столбец идентификаторов в операторе вставки в SQL Server 2017 - PullRequest
0 голосов
/ 21 сентября 2018

Я прочитал пост для вставки строк в таблицу, в которой есть столбец идентификаторов, но он не работает.Вот код, что мне не хватает?Когда я запускаю его, я получаю это сообщение об ошибке:

Cannot insert the value NULL into column 'PP_ID', table 
Med.dbo.tblPledgePayments column does not allow nulls. INSERT fails.
The statement has been terminated.

Если я добавлю столбец идентификаторов в оператор вставки (PP_ID), то вместо добавления следующего логического числа шестнадцать (16) в таблице будет пятнадцать(15) строк он добавляет строки, начиная с одного (1).Как я могу преодолеть это?

DECLARE @TxtHowMuch as int,
    @TxtHowMany as int,
    @TxtPledgeStartDt as datetime,
    @TxtFrequency as nvarchar(50), -- Yearly, Monthly, Qurterly
    @PaymentNumber as int,
    @GID as int,
    @cnt INT = 0                   --Constant


--These values will be brought in from Access
SET @TxtHowMuch = 100000
SET @TxtHowMany = 10
SET @TxtPledgeStartDt = '2018-01-01'
SET @TxtFrequency = 'Yearly'
SET @PaymentNumber = 1
SET @GID = 200

While @cnt < @TxtHowMany
BEGIN
INSERT INTO [dbo].[tblPledgePayments] 
(PP_schedule, GiftID, PP_DueDate, PP_Amount)

Select 
 @PaymentNumber, @GID,

Case
    WHEN @TxtFrequency = 'Yearly'    THEN DateAdd(YEAR,    @cnt, @TxtPledgeStartDt)
    WHEN @TxtFrequency = 'Monthly'   THEN DateAdd(MONTH,   @cnt, @TxtPledgeStartDt)
    WHEN @TxtFrequency = 'Quarterly' THEN DateAdd(QUARTER, @cnt, @TxtPledgeStartDt)
END 

,@TxtHowMuch / @TxtHowMany   

SET @cnt = @cnt + 1;
SET @PaymentNumber = @PaymentNumber + 1;

END;
...