gpt4 book ai didi

sql - T-SQL 唯一标识列作为复合主键的一部分

转载 作者:行者123 更新时间:2023-12-05 01:02:30 25 4
gpt4 key购买 nike

假设您有一个具有以下结构的表:

CREATE TABLE [log] (
[type] int NOT NULL,
[stat] nvarchar(20) NOT NULL,
[id] int IDENTITY (1, 1) NOT NULL,
descr nvarchar(20),
PRIMARY KEY ([type], [stat], [id])
)

是否可以强制 [id]仅在其他两个 PK 字段具有相同值时才增加,而不是像现在这样独立?例如:
type    stat      id     descr
5 ERROR 1 Test <---
3 WARNING 1 Test
5 ERROR 2 Test <---
2 ERROR 1 Test
1 WARNING 1 Test
5 WARNING 1 Test
5 ERROR 3 Test <---

最佳答案

不可以。 IDENTITY(或 SEQUENCE)的目的只是生成一个增量整数。由于值未重用,因此可能存在间隙,并且值可能被保留但未使用。

您可以在查询中使用表达式来显示所需的值。

ROW_NUMBER() OVER (PARTITION BY type, stat ORDER BY id) AS Seq

关于sql - T-SQL 唯一标识列作为复合主键的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276949/

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