gpt4 book ai didi

sql-server - 数据库模式,自动递增

转载 作者:行者123 更新时间:2023-12-05 05:21:14 26 4
gpt4 key购买 nike

这里是数据库问题。是否可以在二级或三级 ID 上进行自动增量?我需要做一些基于版本的东西,所以想象一下:

ID  Phrase  PhraseID    PhraseVersion
1 "" 1 1
2 "" 1 2
3 "" 1 3
4 "" 2 1

添加到数据库时,PhraseID 可以是相同的数字。如果 PhraseID 存在,我希望 PhraseVersion 自动增加数量。如果 PhraseID 不存在,我希望 PhraseVersion 重新开始,从 1 开始计数。

这可能吗?

最佳答案

我会为 PhraseVersion 使用一个计算列,它将计算具有相同 PhraseIDId 的行数小于或等于到当前行。

为此,您需要创建一个 UDF 来计算 PhraseVersion:

CREATE FUNCTION dbo.GetPhraseVersion (
@PhraseId int,
@id int
)
RETURNS INT
AS
BEGIN
RETURN (
SELECT COUNT(*)
FROM T
WHERE PhraseId = @PhraseId
AND Id <= @id
)
END
GO

然后,使用计算列创建表:

CREATE TABLE T
(
id int identity(1,1),
PhraseId int,
PhraseVersion as dbo.GetPhraseVersion(PhraseId, id)
)

GO

现在进行测试 - 插入 4 条记录:

INSERT INTO T (PhraseId) VALUES(1),(1),(1),(2)

选择:

SELECT *
FROM T

结果:

id  PhraseId    PhraseVersion
1 1 1
2 1 2
3 1 3
4 2 1

You can see a live demo on rextester.

关于sql-server - 数据库模式,自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43277211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com