“选择 *” 的危害






4.43/5 (6投票s)
“选择 *” 另一个“奇怪的特性”是,在视图 (View) 中,“选择 *” 并不会选择表中的所有列。它选择的是在视图创建时表中存在的列。我是在向表中添加了一些列,并想在...中映射这些列时才发现的。
“选择 *” 另一个“奇怪的特性”是,在视图 (View) 中,“选择 *” 并不会选择表中的所有列。它选择的是在视图创建时表中存在的列。我是在向表中添加了一些列,并想在自定义 VB
Class
中映射这些列时才发现的。我创建了一些 Properties
并通过一个 SqlCommand Object
从视图中选择数据来填充它们。但是 Properties
没有获得值。我查看了视图,发现是 select * from table
加上一些连接 (joins)。我以为 select *
总是会选择所有列,并认为错误出在我的代码中。直到一个小时后,我才更新了视图(仅仅打开修改视图的脚本并运行它就解决了问题,实际上不需要进行任何真正的更改)。在那之后,我惊讶地看到一切都正常工作了。让东西正常工作通常是令人满意的。但是,在没有实际更改任何东西的情况下让东西正常工作却令人沮丧... 那时我放弃了 select *
... 我只在临时查询中用它来查找一些值,绝不在生产代码中使用。