Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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# 如何防止ID增加并使用第一个可用的未使用ID?_C#_Sql_.net_Sql Delete_Window Functions - Fatal编程技术网

C# 如何防止ID增加并使用第一个可用的未使用ID?

C# 如何防止ID增加并使用第一个可用的未使用ID?,c#,sql,.net,sql-delete,window-functions,C#,Sql,.net,Sql Delete,Window Functions,当我从表中删除一个项目时,我希望在该表中添加下一个项目时,该项目应使用第一个可用的未使用ID。我如何实现这一点?当我删除所有项目并创建新项目时,发生了以下情况: 在这种情况下,项目Id 21最好是1。您的意思是要将自动确认Id重新排列回1?我相信这会解决它我建议不要修改(看起来像什么)主键列。例如,副作用:如果其他实体引用主列,则此操作将失败或中断关系。此外,您可能需要为每个执行的delete对整个表重新编号 如果需要动态自动递增的数字,可以在视图中使用row\u number(): crea

当我从表中删除一个项目时,我希望在该表中添加下一个项目时,该项目应使用第一个可用的未使用ID。我如何实现这一点?当我删除所有项目并创建新项目时,发生了以下情况:


在这种情况下,项目Id 21最好是1。

您的意思是要将自动确认Id重新排列回1?我相信这会解决它

我建议不要修改(看起来像什么)主键列。例如,副作用:如果其他实体引用主列,则此操作将失败或中断关系。此外,您可能需要为每个执行的
delete
对整个表重新编号

如果需要动态自动递增的数字,可以在视图中使用
row\u number()

create view myview as
select
    row_number() over(order by item_id) item_id,
    title,
    description
from mytable 

然后,您可以查询视图而不是表,这会提供一个始终最新的增量编号。

听起来您并没有考虑您所要求的全部结果。如果任何ID在任何时候被删除,这意味着您需要更新该表中的每一条记录以及所有相关表中超过已删除ID ID的所有行。所以我应该像这样保留它?Iyes,别管了。这是正确的和默认的ish行为。是的,但我如何使用Ef core做到这一点?