我必须在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
。有一种方法可以使用单个脚本来查看视图列表吗?
答案 0 :(得分:0)
您可以按照以下几个步骤执行此操作:
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 ...;
在文本编辑器中复制/粘贴上述输出并执行智能查找/替换以在选择列表中插入附加列。
最简单的查找/替换将是:
查找:" FROM"
替换:",IDana AS ID FROM"
但是如果在视图中嵌套了SELECT语句,这将不起作用。在这种情况下,如果您的编辑器支持它们,您应该使用正则表达式,以确保替换恰好发生在应有的位置。
像这样的正则表达式会这样做:
查找:" /(创建视图。*?SELECT。*?)FROM / gi"
替换:" $ 1,IDana AS ID FROM"
最后,按CREATE VIEW
替换所有ALTER VIEW
次出现。
将操纵的SQL语句复制/粘贴回数据库环境并作为批处理执行。