为什么使用'*'构建视图不好?
假设您有一个复杂的连接,并且可以在某处使用所有字段.
然后你只需要选择所需的字段.
SELECT field1, field2 FROM aview WHERE ...
Run Code Online (Sandbox Code Playgroud)
视图"aview"可能是 SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...
如果table1和table2中的2个字段具有相同的名称,则会出现问题.
这只是为什么在视图中使用'*'不好的原因?
使用'*',您可以在不同的上下文中使用该视图,因为信息就在那里.
我错过了什么?
问候
客户声称,在查询某些数据时,应用程序(.NET)会返回与客户直接查看数据表时不同的数据.
我知道可能有各种各样的原因并且在完全不同的地方.我的目的不是在这里解决它,而是要求经验丰富的DBA和DB开发人员:
SELECT ... FOR UPDATE导致这个???在某些表中,列位置发生了变化:显然,客户为数据库使用情况分析的顾问提供了完整的数据库访问权限.当使用子句时,那个伟大的家伙改变了列的顺序,以查看表格开头的几个审计字段SELECT * ....
使用dbGhost将数据库模式与问题出现前几天进行的备份模式进行比较,并发现列位置差异.
接下来发生的事情与编程无关,但更多的是政治问题.
因此,这sp_refreshview是解决方案.我只是更进一步找到导致问题的原因.谢谢你们.