C# 如何在sql中向表插入动态id?
我想在我的DB InjuryScenario中的表中添加一个动态id,因为我使用visual studio c并尝试了以下方法:C# 如何在sql中向表插入动态id?,c#,sql,C#,Sql,我想在我的DB InjuryScenario中的表中添加一个动态id,因为我使用visual studio c并尝试了以下方法: declare @InjuryScenarioTMPp int; set @InjuryScenarioTMPp = (select MAX (InjuryScenario_id) from InjuryScenario) +1; print @InjuryScenarioTMPp; 当我打印它时,它没有显示任何内容。 当我尝试向表中添加一行时,我再次尝试向上添
declare @InjuryScenarioTMPp int;
set @InjuryScenarioTMPp = (select MAX (InjuryScenario_id) from InjuryScenario) +1;
print @InjuryScenarioTMPp;
当我打印它时,它没有显示任何内容。
当我尝试向表中添加一行时,我再次尝试向上添加3行,它会打印2行。
也许当表中没有任何行时,它不知道如何执行NULL+1?
有人知道为什么吗?这取决于您希望使用哪种数据库。例如,在MySQL中,必须在一个字段上使用自动递增。但在Postgres或Oracle中,您应该先创建一个序列,然后再将该序列的下一个值添加到新记录中。空值是未知值,对未知值进行算术运算的结果也是未知的。您所能做的是在使用空值时,使用COALESCEOR THIESNULL函数将其替换为0:
declare @InjuryScenarioTMPp int;
set @InjuryScenarioTMPp = (select ISNULL(MAX(InjuryScenario_id),0) from InjuryScenario) + 1;
print @InjuryScenarioTMPp;
见MSDN:和
例如:
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)
我使用的是SQL而不是MySQL。我不想使用自动递增,我想使用我写的3行,并知道要添加什么,以便它将work@user3082812如果我的回答解决了你的问题,请考虑接受。