首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引视图: Union All / Full Join选项

索引视图: Union All / Full Join选项
EN

Stack Overflow用户
提问于 2012-09-03 19:13:23
回答 1查看 3.4K关注 0票数 3

我有两个表,它们都有一个'Name‘列。这些表彼此不相关。我想在这两列中强制实现唯一性。

我一直在尝试在这两列的基础上创建一个索引视图,但我发现不能使用union all或full join来获得完整的名称列表。我觉得我错过了一个明显的替代方案,它允许我添加唯一索引。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-03 19:37:18

假设您的两个基表在' name‘上都有一个唯一的约束,那么唯一违反唯一性的方法就是两个表中有相同的名称。

也就是说,您期望对它们的连接返回零行。因此,您可以对包含2行的表交叉连接该连接的结果,并针对该表创建一个唯一的索引。

代码语言:javascript
复制
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) 
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12246714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档