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

时间:2014-01-24 22:41:19

标签: sql sql-server database tsql

每次更改另一列的值时都可以重置自动值吗?

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

表头:ID_TESTA,CUSTOMER ......等(ID_TESTA列是PK,也是身份)

表LINES:ID_TESTA,ID_RIGA,ITEM,PRICE等......(ID_TESTA和ID_RIGA列是组合PK的,ID_RIGA列也是标识。 每次更改ID_TESTA值时,此列ID_RIGA都应重置。

示例:现在表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语句中,我不编写标识列,它们由数据库自动分配。

再见。再见 坦克你

1 个答案:

答案 0 :(得分:1)

在桌面上查询时,只需执行此操作:

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

您可以将其放入视图中,以便在使用该表的任何位置都可用。