可以在多个视图中添加字段吗?

时间:2016-01-28 11:31:10

标签: sql sql-server view

我必须在SQL Server中为多个视图添加一个列,一个字段。这是我使用的视图示例,其中dynamiclabel1.Width = 150; 保留表格,tbxxx表示视图:

vwxxx

我必须在我的所有视图中添加另一个字段,即另一列,它始终是主要表的主键!修改后的视图将是:

ALTER VIEW [dbo].[vwFornitori_Search]
AS
    SELECT IDitem,
           IDana,
           codice,
           ragione_sociale,
           c.valore AS colore
    FROM tbAnagrafiche
    LEFT JOIN tbColori c ON tbAnagrafiche.colore = c.IDcolore
    WHERE IDitem = 'FOR'
        AND ISNULL(eliminato, 0) = 0
        AND ISNULL(obsoleto, 0) = 0
GO

通常,主键始终具有相同的名称,例如ALTER VIEW [dbo].[vwFornitori_Search] AS SELECT IDitem, IDana, codice, ragione_sociale, c.valore AS colore, IDana AS ID FROM tbAnagrafiche LEFT JOIN tbColori c ON tbAnagrafiche.colore = c.IDcolore WHERE IDitem = 'FOR' AND ISNULL(eliminato, 0) = 0 AND ISNULL(obsoleto, 0) = 0 GO 。有一种方法可以使用单个脚本来查看视图列表吗?

1 个答案:

答案 0 :(得分:0)

您可以按照以下几个步骤执行此操作:

1。提取视图的SQL'定义:

SELECT CONCAT(m.definition, ';') 
FROM   sys.sql_modules m, sys.views v
WHERE  m.object_id = v.object_id
AND    v.name in ('myview1', 'myview2');

以表格形式输出SQL语句列表:

CREATE VIEW myview1 (mycol1, mycol2) AS
SELECT ...;
CREATE VIEW myview1 (mycol1, mycol2, mycol3) AS
SELECT ...;

2。操纵SQL

在文本编辑器中复制/粘贴上述输出并执行智能查找/替换以在选择列表中插入附加列。

最简单的查找/替换将是:

  

查找:" FROM"
  替换:",IDana AS ID FROM"

但是如果在视图中嵌套了SELECT语句,这将不起作用。在这种情况下,如果您的编辑器支持它们,您应该使用正则表达式,以确保替换恰好发生在应有的位置。

像这样的正则表达式会这样做:

  

查找:" /(创建视图。*?SELECT。*?)FROM / gi"
  替换:" $ 1,IDana AS ID FROM"

最后,按CREATE VIEW替换所有ALTER VIEW次出现。

3。执行最终的SQL

将操纵的SQL语句复制/粘贴回数据库环境并作为批处理执行。