如何解决:无法将值NULL插入列,插入失败

时间:2019-05-17 09:22:25

标签: sql sql-server stored-procedures

对于学校,我正忙于在数据库中编写存储过程。现在,当我尝试执行它时出现错误。

我已经尝试在堆栈溢出中查找修复程序,但是找不到任何可以帮助我的东西。

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 个答案:

答案 0 :(得分:1)

我认为您输入错误:

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

应该是:

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

但是为什么不只使用IDENTITY

此外,因为这是供学校使用的;当您将表插入总是时,请列出各列:

INSERT INTO productbestelling (productid, bestellingsid, aantal_producten)