为什么使用“*”构建视图不好?
假设您有一个复杂的联接,并且所有字段都可能在某处使用。
然后您只需选择所需的字段即可。
SELECT field1, field2 FROM aview WHERE ...
视图“aview”可以是SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...
如果表 1 和表 2 中的 2 个字段具有相同的名称,则会出现问题。
这只是在视图中使用“*”不好的原因吗?
使用“*”,您可以在不同的上下文中使用该视图,因为信息就在那里。
我缺少什么?
Regards
我不认为软件中有太多“只是糟糕”,但有很多东西被以不好的方式滥用:-)
您给出的示例是 * 可能无法给您所期望的结果的原因,我认为还有其他原因。例如,如果基础表发生更改,可能会添加或删除列,则使用 * 的视图将继续有效,但可能会破坏使用它的任何应用程序。如果您的视图明确命名了列,那么有人在更改架构时更有可能发现问题。
另一方面,你实际上可能want你对快乐的看法
接受对基础表的所有更改,在这种情况下,* 将
成为你想要的。
Update:我不知道OP是否考虑了特定的数据库供应商,但现在很明显,我的最后一句话并不适用于所有类型。我感谢 user12861 和 Jonny Leeds 指出了这一点,很抱歉我花了 6 年多的时间来编辑我的答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)