插入查询:为什么不包含列名是一个坏主意?

Yat*_*rix 4 sql sql-server-2005 insert

我在上一份工作时被告知永远不要这样做;没有解释原因。我知道它增加了出错的机会,但如果只有几列并且我对它们的顺序很有信心,为什么我不能简写它并以正确的顺序插入值而不显式匹配列名称?性能差异大吗?如果是的话,这在小范围内重要吗?

如果没有性能影响,并且这不是一个将被保存以供其他人查看的查询,为什么我不应该这样做呢?

提前致谢。

das*_*ght 5

仅当您在交互式数据库工具中手动键入查询时,这是可接受的。当程序执行 SQL 语句时,您无法对表中列的顺序绝对有信心,除非您是唯一有权访问数据库的开发人员。换句话说,在任何团队环境中,有人可能会通过对数据库中的列进行重新排序来破坏您的查询。从逻辑上讲,你的表将保持不变,但你的程序仍然会崩溃。