自动增量在插入查询时更改了另一个ID时重新设置

时间:2015-11-23 08:03:48

标签: asp.net sql-server vb.net sql-server-2008

我有一个可以作为主键的两个ID

SID DEFECT_ID
  1     1
  1     2
  1     3
  1     4
  1     5

DEFECT_ID是自动增量SID是静态的,可以是另一个值,如1或2或3

当sid是另一个像这样的值时,我需要重新设置

SID DEFECT_ID
  1     1
  1     2
  1     3
  1     4
  1     5
  2     1
  2     2
  2     3
  3     1
  3     2
  1     6
  1     7

可以在sql server中设置吗?

2 个答案:

答案 0 :(得分:1)

可能有办法做你要问的事情,但我觉得你可能会让它变得比它需要的更复杂。

通常,您不会尝试像标识字段那样“重新播种”。相反,你最终得到这样的输出:

SID DEFECT_ID
  1     1
  1     2
  1     3
  1     4
  1     5
  2     6
  2     7
  2     8
  3     9
  3     10
  1     11
  1     12

这就是关系数据库通常如何做到并试图“反对谷物”只是为每个唯一的SID重新启动数字将是困难和容易出错。

答案 1 :(得分:1)

您可以使用OVER Clause(T-SQL)获取表格中每个ID的订单号

SELECT ID
    ,row_number() OVER (
        PARTITION BY ID ORDER BY id ASC
        ) value
FROM table_name