gpt4 book ai didi

sql-server - 索引 View : Union All/Full Join alternatives

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

我有两个表,它们都有一个“名称”列。这些表彼此不相关。我想在这两列之间强制执行唯一性。

我一直在尝试从两列中创建一个索引 View ,但发现我不能使用 union all 或 full join 来获取完整的名称列表。我觉得我错过了一个明显的替代方案,它可以让我添加唯一索引。

最佳答案

假设您的两个基表都对“名称”具有唯一约束,那么唯一可以违反唯一性的方法是两个表中的名称相同。

即您希望对它们的连接返回零行。因此,您可以将该连接的结果与具有 2 行的表交叉连接,并针对该表创建唯一索引。

CREATE TABLE dbo.Two
(
N INT PRIMARY KEY
)

INSERT INTO dbo.Two
VALUES (1),
(2)

GO

CREATE VIEW dbo.UniqueNames
WITH SCHEMABINDING
AS
SELECT T1.Name
FROM dbo.T1
INNER JOIN dbo.T2
ON T1.Name = T2.Name
CROSS JOIN dbo.Two

GO

CREATE UNIQUE CLUSTERED INDEX IX
ON dbo.UniqueNames(Name)

关于sql-server - 索引 View : Union All/Full Join alternatives,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12246714/

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