首页 > 解决方案 > SQL 使用自动增量填充,但外键重置已更改

问题描述

图 1

嗨,我有这样的表,我必须用自动增量填充列 Test,但是每次 DAId 外键更改时,自动增量必须重置为 1。

我需要 sql 脚本在 .net 核心迁移中执行。

这应该是最终结果。

图 2

标签: sql

解决方案


你似乎想要row_number()

select id, daid,
       row_number() over (partition by daid order by id) as test
from t;

如果要更新值,则语法取决于数据库。“.net”的提及暗示了 SQL Server。如果是这样,那有一个非常方便的功能,称为可更新 CTE:

with toupdate as (
      select t.*,
           row_number() over (partition by daid order by id) as new_test
      from t
     )
update toupdate
    set test = new_test;

推荐阅读