VFP 视图只是一个 SQL 定义 + 一些保存在 DBC 中的属性。只需使用“union ALL”,您就可以将具有相同结构的多个视图组合成一个新视图。然而,将它作为一个单一的视图并不现实,因为让它可更新是没有意义的。
使用这些视图来创建新视图实际上并没有多大意义。相反,您可以直接使用一个视图的 SQL 定义来创建最终视图。即:如果您的视图定义是:
select CustomerId, CustomerName from Customers1
select CustomerId, CustomerName from Customers2
*...
select CustomerId, CustomerName from CustomersN
那么你可以简单地将你的新定义定义为:
create sql view vMultiple as ;
select CustomerId, CustomerName from Customers1 ;
union all ;
select CustomerId, CustomerName from Customers2 ;
union all ;
* ... ;
select CustomerId, CustomerName from CustomersN
要为此添加一些间接可更新性,您可能需要为源添加一列,例如:
create sql view vMultiple as ;
select 1 as Source, CustomerId, CustomerName from Customers1 ;
union all ;
select 2 as Source, CustomerId, CustomerName from Customers2 ;
union all ;
* ... ;
select N as Source, CustomerId, CustomerName from CustomersN
由于创建这样的视图没有多大意义,您可能希望在需要时将其创建为光标:
select 1 as Source, CustomerId, CustomerName from Customers1 ;
union all ;
select 2 as Source, CustomerId, CustomerName from Customers2 ;
union all ;
* ... ;
select N as Source, CustomerId, CustomerName from CustomersN ;
into cursor crsMultiple ;
nofilter && or readwrite if it needs any updating
请记住,游标和视图(也是游标)都没有持久索引,并且视图游标是缓冲的。您可以根据需要创建索引。
三思而后行,为什么需要对此(或任何视图)的视图。