Как исправить: не удается вставить значение NULL в столбец, вставка не удалась - PullRequest
0 голосов
/ 17 мая 2019

Для школы я занят написанием хранимой процедуры в моей базе данных. Теперь я получаю сообщение об ошибке при попытке его выполнить.

Я уже пытался найти исправления переполнения стека, но не смог найти ничего, что помогло бы мне.

create procedure spNieuweBestelling
    (@medewerkerid int,
     @productid int,
     @aantal_producten int)
as
begin
    declare @bestellingsid int
    declare @besteldatum date = getdate()

    select @bestellingsid = max(@bestellingsid) + 1
    from bestelling b;

    begin transaction
        insert into bestelling 
        values (@bestellingsid, @medewerkerid, @besteldatum)

        insert into productbestelling 
        values (@productid, @bestellingsid, @aantal_producten)

        if @@ERROR <> 0
        begin
            rollback
            raiserror ('error tijdens de 2de insert',16,1)
            return
        end
    end
    commit

exec spNieuweBestelling 2,2,200

Скриншот таблицы: https://prnt.sc/npqhiz

Я ожидаю, что эта процедура будет вставлена ​​в эти 2 таблицы, но продолжает вызывать эту ошибку.

1 Ответ

1 голос
/ 17 мая 2019

Я думаю, что вы сделали опечатку:

select @bestellingsid = max(@bestellingsid) + 1
    from bestelling b;

Вероятно, должно быть:

select @bestellingsid = max(bestellingsid) + 1
    from bestelling b;

Но почему бы вам просто не использовать IDENTITY?

Кроме того, так как это для школы; При вставке в таблицу всегда перечисляйте столбцы:

INSERT INTO productbestelling (productid, bestellingsid, aantal_producten)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...