Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在sql中向表插入动态id?_C#_Sql - Fatal编程技术网

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

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; 当我打印它时,它没有显示任何内容。 当我尝试向表中添加一行时,我再次尝试向上添

我想在我的DB InjuryScenario中的表中添加一个动态id,因为我使用visual studio c并尝试了以下方法:

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如果我的回答解决了你的问题,请考虑接受。