如何添加標識號,以便在插入行時通過觸發器分配增量號碼如下所示:我正在使用SQL Server。SQL Server:標識按組列出
1 AAA
2 AAA
3 BBB
4 CCC
5 CCC
6 CCC
7 DDD
8 DDD
9 EEE
....
我想將其轉換爲:
1 AAA 1
2 AAA 2
4 CCC 1
5 CCC 2
6 CCC 3
7 DDD 1
8 DDD 2
如何添加標識號,以便在插入行時通過觸發器分配增量號碼如下所示:我正在使用SQL Server。SQL Server:標識按組列出
1 AAA
2 AAA
3 BBB
4 CCC
5 CCC
6 CCC
7 DDD
8 DDD
9 EEE
....
我想將其轉換爲:
1 AAA 1
2 AAA 2
4 CCC 1
5 CCC 2
6 CCC 3
7 DDD 1
8 DDD 2
您可以創建一個FUNCTION
其得名,並給出MAX
身份給定參數:
CREATE FUNCTION [dbo].[GetIdentityForName] (@Name VARCHAR(MAX))
RETURNS INT
AS
BEGIN
RETURN
(SELECT ISNULL(MAX(NameId),0)+1
FROM YourTable
WHERE Name = @Name);
END
,然後設置DefaultValue
對於NameId
用於調用插入記錄時的功能,如下所示:
ALTER TABLE YourTable ADD CONSTRAINT
DF_Identity_NameId DEFAULT ([dbo].[GetIdentityForName](Name)) FOR NameId
假設YourTable
是(Id
,Name
,NameId
)。
我希望你:)
沒有理由爲什麼你要存儲的值是有幫助的。你可以在需要時計算它:
select t.*, row_number() over (partition by name order by id) as nameId
from t;
你在使用什麼數據庫? – Dalorzo
MS SQL數據庫 – Mansoor
你是否也想過濾出id爲3和9的行? – cars10m