如何在sql中向表插入动态id

本文关键字:插入 动态 id sql | 更新日期: 2023-09-27 17:54:39

我想在我的DB("伤害场景"(中的一个表中添加一个动态id(因为我使用visual studio c#(,我尝试了这个:

declare @InjuryScenarioTMPp int; 
set @InjuryScenarioTMPp = (select MAX (InjuryScenario_id) from InjuryScenario) +1; 
print @InjuryScenarioTMPp;

当我打印它时,它什么也没显示。当我尝试向表中添加一行,并再次尝试3行(向上(时,它确实打印出"2"。也许当我在表中没有任何行时,它不知道该怎么做(NULL+1(?有人知道为什么吗?

如何在sql中向表插入动态id

这取决于您想要使用的数据库类型。例如,在MySQL中,您必须在一个字段上使用AUTO INCREMENT。但在Postgres或Oracle中,您应该首先创建一个序列,然后将该序列的下一个值添加到新记录中。

NULL值是未知值,对未知值进行算术运算的结果也是未知的。您可以使用COALESCEISNULL函数将NULL值替换为0

declare @InjuryScenarioTMPp int; 
set @InjuryScenarioTMPp = (select ISNULL(MAX(InjuryScenario_id),0) from InjuryScenario) + 1; 
print @InjuryScenarioTMPp;

请参阅MSDN:COALESCE和ISNULL

例如:

declare @i int
set @i = null
select @i+1, coalesce(@i, 0)+1, isnull(@i, 0)+1
set @i = 1
select @i+1, coalesce(@i, 0)+1, isnull(@i, 0)+1

输出:

----------- ----------- -----------
NULL        1           1
(1 row(s) affected)

----------- ----------- -----------
2           2           2
(1 row(s) affected)
相关文章: