所以在 oracle 中有一个名为 XYZ 的 VIEW,有人说,我们将用同名的 TABLE 替换它。
这会对写在该视图上的现有 SQL 产生什么样的影响?查询 VIEW 的语法是否与查询 TABLE 的语法相同?
通过“......用表替换它......”我假设您的意思是使用视图引用的相同数据创建表。换句话说,新表冗余地包含来自其他表(视图引用的那些)的数据。
SELECT-Statements 不需要更改 - 语法是相同的。
但是:视图将立即反映基础表中的更改。该表显然不是 - 它必须通过触发器或应用程序逻辑保持同步。所以根据观点,这可能是一个相当大的变化。如果视图是可更新的,则更是如此。
例子:
假设视图被定义为... select a.key, b.name from a,b where b.key = a.b_ref
然后从视图中选择将始终反映对表a
和b
.
如果将其替换为表,则每次更新表时都必须更新该新表a
或b
.
只要Name DataType和DataLength中的列相同,就不会产生影响。
SQL SELECT 语句必须将 VIEWS 和 TABLE 视为相同的事物。