找出视图中的列来自哪个表(T-SQL)

时间:2014-06-16 10:28:18

标签: sql-server tsql stored-procedures sql-view

我有一个SQL视图,它使用UNION ALL将2个表组合在一起。

我正在编写一个存储过程来更新布尔值,并且由于联合的存在,显然无法更新视图本身。所以我试图找到确定数据行来自哪个表的最佳方法,然后直接更新该表。

是否有可用于查找此内容的SYS表等?

2 个答案:

答案 0 :(得分:2)

您可以添加一列来区分两个表:

例如:

SELECT table1ID, table1Values...etc, 'table1' As OriginatingTable FROM table1
UNION
SELECT table2ID, table2Values...etc, 'table2' As OriginatingTable FROM table2

然后在存储过程中,要确定要更新的表,只需检查OriginatingTable的列值。

答案 1 :(得分:1)

在正在联合的子句中,您可以添加另一个用于命名源表的列,并在存储过程中引用该列。