添加/删除表的列 - 代码维护/优化

时间:2013-11-14 12:28:12

标签: sql sql-server-2008 sql-server-2005 code-maintainability

维护大型项目代码的最佳方法是什么?

假设您有1000个存储过程,并且必须向表中添加新列(或删除)

可能存在1-2或30个可能受影响的存储过程。

对表名进行单一“搜索”可能不够好,假设您只需要知道表插入/更新/删除的位置。

搜索'insert tablename'可能是一个好主意,但是你可能在这2个单词或2个空格或TAB之间有空格...也许表名写成'[tablename]' 所有3都相同(插入/更新/删除。)

我基本上在寻找某种“受限制的依赖”

如何以最佳方式处理?

  1. 使用此类信息保留数据库表,并在每次更改存储过程时更改该表?

  2. 在每个插入/更新/删除旁边保留一些特定代码作为注释,这样,您就可以搜索所需内容了吗? 示例:'insert_tablename','update_tablename','delete_tablename'

  3. 任何有更好主意的人?

1 个答案:

答案 0 :(得分:1)

理想情况下,更改是向后兼容的。不仅可以在不破坏引用它的所有对象的情况下更改表,还可以在部署所有应用程序代码之前部署所有数据库更改(在分布式体系结构中,考虑可下载的桌面应用程序)或iPhone应用程序,人们远程连接到您的数据库,这是至关重要的。)

例如,如果向表中添加新列,它应该是NULLable或具有默认值,以便INSERT语句不需要立即更新以引用它。存储过程可以逐步更新以接受表示此列的新参数,并且它应该是可空/可选的,以便应用程序不需要立即知道该列。等

这还要求您的原始插入语句包含显式列列表。如果你只是说:

INSERT dbo.table VALUES(@p1, @p2, ...);

然后,这会使您的更改向后兼容变得更加困难。

至于拆除柱子,那有点难度。 SQL Server中的依赖关系并不完美,但您应该能够从这些动态管理对象中找到大量信息:

您可能还会发现这些文章很有趣: