簡體   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