繁体   English   中英

TSQL:如何重置表中标识列的值?

[英]TSQL :how to reset the value of identity column in a table?

每次更改另一列的值是否可以重置自动值?

我有一个经典的数据库INVOICES,其中包含两个相关的表(一对多),HEAD和LINES。

表HEAD:ID_TESTA,CUSTOMER ...等(ID_TESTA列是PK,也是标识)

表LINES:ID_TESTA,ID_RIGA,ITEM,PRICE等...(ID_TESTA和ID_RIGA列是组成PK的字段,ID_RIGA列也是一个标识。此ID_RIGA列应随ID_TESTA值的每次更改而重置。

例子:现在表LINES是这样的:

1 1 Article 100 €
1 2 piece  30 €
2 3 nails   40 euro
2 4 screws  50 €
2 5 wood    47 €
3 6 rows    38 €
3 7 crane   6 € 

我希望如此:

1 1 Article 100 €
1 2 piece  30 €
2 1 nails   40 euro
2 2 screws  50 €
2 3 wood    47 €
3 1 rows    38 €
3 2 crane   6 € 

在提供表的TSQL INSERT语句中,我没有编写标识列,它们由数据库自动分配。

再见,坦克,你

在表上查询时,只需执行以下操作:

select l.*, row_number() over (partition by id_testA order by id_riga) as seqnum
from lines l;

您可以将其放在视图中,以便在使用表的任何地方都可以使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM