Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么不允许在索引视图中使用UNION_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 为什么不允许在索引视图中使用UNION

Sql 为什么不允许在索引视图中使用UNION,sql,sql-server,tsql,Sql,Sql Server,Tsql,根据这一点,在设计索引视图时不可能使用UNION关键字 但是为什么它在技术上是DBMS的一个问题 在这种情况下,允许在VUnion(ID)上添加索引可能非常有用: 我无法回答“为什么”的技术问题,可能只有SQL Server项目的Microsoft开发人员才能完全了解这一点 但是为什么不另设一个表,比如T0,它将保存两个表中的所有id?您甚至可以有外键约束,从T1和T2,引用T0表 当然,这意味着在这两个表上插入和删除过程需要额外的工作,但问题已经解决了:主键将位于T0(id)上,这意味着自动在

根据这一点,在设计索引视图时不可能使用UNION关键字

但是为什么它在技术上是DBMS的一个问题

在这种情况下,允许在VUnion(ID)上添加索引可能非常有用:

我无法回答“为什么”的技术问题,可能只有SQL Server项目的Microsoft开发人员才能完全了解这一点

但是为什么不另设一个表,比如
T0
,它将保存两个表中的所有
id
?您甚至可以有外键约束,从
T1
T2
,引用
T0


当然,这意味着在这两个表上插入和删除过程需要额外的工作,但问题已经解决了:主键将位于
T0(id)
上,这意味着自动在其上建立索引。

这就是我要做的。使用触发器或自定义的精心修剪的存储过程。对于这样一个简单的目标来说,似乎有点过分了。但当我断言“简单”时,我显然错过了一些东西。
CREATE TABLE T1 (ID INT, Name NVARCHAR(100))
CREATE TABLE T2 (ID INT, Info NVARCHAR(1000))

CREATE VIEW VUnion
AS
SELECT ID FROM T1
    UNION
SELECT ID FROM T2
END