每次表格插入记录时,是否可能删除视图,然后使用表格中的数据重新创建视图。例如,我的表结构就像这样
Create Table NeedView (
Databasename varchar(100)
,DateAdded datetime
)
该表中的信息只是一个完全限定的数据库名称,因此servername.database.dbo.table
我的想法是应用一个触发器,每次将记录插入此表时,首先删除视图(它将是名为dbo.ViewMaster
,然后使用快速select
Select fullname, phone
来自数据库中的每个表。这可以通过触发器实现吗?
修改
我现在只需要弄清楚如何循环表来为表中的每个数据库名创建一个视图......我已经准备好了这个粗略的语法,除了实际迭代每个数据库。有人能帮助我找到丢失的部分吗?
CREATE TRIGGER GetViewReady ON [FullOn]
FOR INSERT
AS
IF OBJECT_ID('FullInformation', 'V') IS NOT NULL
DROP VIEW FullInformation
Declare @database varchar(100), @campaignID varchar(10)
Declare C1 Cursor FOR
Select database
FROM [FullOn]
Open C1
Fetch Next FROM C1 INTO @database
WHILE @@Fetch_Status = 0
Begin
'Here is where the actual iteration to create the view would go...
'How would that statement actually need to be syntactically written?
Fetch Next From C1 Into @database
End
GO
编辑 -
一些数据库名称为hellfire.master.dbo.hennigar
,hellfire.mainframe.dbo.dekalb
,hellfire.master.dbo.ftworth
,我所遵循的语法如下:
Select fullname, phone
FROM hellfire.master.dbo.hennigar
UNION ALL
select fullname, phone
from hellfire.mainframe.dbo.dekalb
UNION ALL
select fullname, phone
from hellfire.master.dbo.ftworth