小编n4e*_*esa的帖子

身份值硬编码的 SQL 最佳实践

首先,我知道这是一个相当主观的问题,但我需要某种正式的文件来帮助我教育我的客户。

背景 - 具有数百个表和 SP 的大型企业应用程序,所有表和使用标识列的规范化表和外键都经过精心设计。

我们的客户有一些员工使用我们生产数据库的复制副本在 Crystal 企业中编写复杂的报告。

我们有表格存储我将归类为“系统”基本信息的内容,例如办公室位置或公司内部门的列表、用户的标准角色集、其他对象的状态(打开/关闭等),基本上是数据这不会经常改变。

问题 - 报告设计者和财务分析师正在编写带有硬编码身份值的查询。像这样的东西

SELECT xxx FROM OFFICE WHERE OFFICE_ID = 6
Run Code Online (Sandbox Code Playgroud)

我在这里大大简化了,但基本上他们在他们的过程中到处使用这些硬编码的 int 值。

对于 SQL 开发人员来说,看到这一点显然会让你感到震惊,因为不这样做只是一种内在的本能。

然而,令人惊讶的是,我找不到任何关于为什么不应该这样做的文档甚至最佳实践文章。

他们会争辩说这样做很好,因为这些值永远不会改变,而且他们是对的,在单个系统中,这些值不会改变,但是在多个环境(staging/QA/Dev)中,这些值可以并且绝对不同,使他们的报告设计方法不可移植,并且只能在 1 个隔离的服务器环境中运行。

那里的任何 SQL 大师是否有任何更深入的信息/文章等,我可以用它来帮助我的客户教育他们为什么应该避免这种方法?

sql-server identity-column

4
推荐指数
1
解决办法
654
查看次数

标签 统计

identity-column ×1

sql-server ×1