sql 根据ID自动递增

sql auto increment based on ID

我使用的是 SQLServer 2017,我有一个 table 我想为每个 ID 自动递增。 示例 Table A 有列

PolicyID, ClaimID, TranId

具有以下值

ABC123, 111, 1

当另一行获得 inserted/added TranId 将显示 2 等等,但如果 PolicyID 不同,假设 ABC456 那么预期的 TranId 应该是 1 但我的 table 只是保持递增而不是每个策略 ID.

您正在尝试创建一个序列,这不应存储在 table 中。

尝试创建视图:

create vw_xxx as
(
select PolicyID, ClaimID
      , TranId = row_number() over (partition by PolicyID order by ClaimID)
from tableXXX
)

这是如何执行此操作的示例。您需要正确地分区和排序以获得正确的顺序。

如果这个 table 很大,那么您希望在分区上有一个按列排序的索引。

每次在 MyTable 中输入新行时,您都必须 运行 以下 UPDATE:

UPDATE Table_A
SET Table_A.TranId = Table_B.[TranId]
FROM MyTable AS Table_A
INNER JOIN (
    SELECT PolicyID, ClaimID, ROW_NUMBER() OVER (PARTITION BY PolicyID, ClaimID ORDER BY ClaimID) AS [TranId]

来自 MyTable ) Table_B 在 Table_A.PolicyID = Table_B.PolicyID 和 Table_A.ClaimID = Table_B.ClaimID