对于学校,我正忙于在数据库中编写存储过程。现在,当我尝试执行它时出现错误。
我已经尝试在堆栈溢出中查找修复程序,但是找不到任何可以帮助我的东西。
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个表中,但会不断出现此错误。
答案 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)