gpt4 book ai didi

sql - 在表的同一列上定义的主键约束和唯一约束

转载 作者:行者123 更新时间:2023-12-03 23:38:13 26 4
gpt4 key购买 nike

今天我遇到了一个场景,我观察到 SQL Server 实际上允许我们在同一列上创建主键约束和唯一约束。我希望它不会在语法上抛出任何错误。

我测试了它,它似乎工作正常。

示例代码:

CREATE TABLE testtable
(
id INT IDENTITY(1,1),
name VARCHAR(10),

CONSTRAINT PK_ID PRIMARY KEY (id),
CONSTRAINT uk_id UNIQUE (id)
)

我还看到它分别创建了一个 PK 约束和唯一约束。

我想了解您对单独创建此唯一 key 的优势有何看法?

始终与主键一起创建唯一约束是否是一种好习惯?如果答案是“否”,在什么情况下会有优势。

我觉得这是一个非常基本的问题,但我想得到一些专家的想法和建议。

谢谢。

最佳答案

唯一约束是在数据库中作为约束对象列出的唯一索引。

这将与您的聚集索引(在此实例中的主键)分开存在。

这可能会有一些好处,例如对于针对该表的其他表的外键查找,因为创建的唯一索引将小于聚集索引(如果您的表中有其他列)。

Adding nonclustered index on primary keys

Unique Constraints and Unique Indexes

如果您的主键不是集群键,我认为您将很难找到优势,在这种情况下,您将添加一个冗余的唯一非集群索引(即使一个不是主键)。

关于sql - 在表的同一列上定义的主键约束和唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42169403/

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