如何在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(?有人知道为什么吗?
这取决于您想要使用的数据库类型。例如,在MySQL中,您必须在一个字段上使用AUTO INCREMENT。但在Postgres或Oracle中,您应该首先创建一个序列,然后将该序列的下一个值添加到新记录中。
NULL
值是未知值,对未知值进行算术运算的结果也是未知的。您可以使用COALESCE
或ISNULL
函数将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)