维护大型项目代码的最佳方法是什么?
假设您有1000个存储过程,并且必须向表中添加新列(或删除)
可能存在1-2或30个可能受影响的存储过程。
对表名进行单一“搜索”可能不够好,假设您只需要知道表插入/更新/删除的位置。
搜索'insert tablename'可能是一个好主意,但是你可能在这2个单词或2个空格或TAB之间有空格...也许表名写成'[tablename]' 所有3都相同(插入/更新/删除。)
我基本上在寻找某种“受限制的依赖”
如何以最佳方式处理?
使用此类信息保留数据库表,并在每次更改存储过程时更改该表?
在每个插入/更新/删除旁边保留一些特定代码作为注释,这样,您就可以搜索所需内容了吗? 示例:'insert_tablename','update_tablename','delete_tablename'
任何有更好主意的人?
答案 0 :(得分:1)
理想情况下,更改是向后兼容的。不仅可以在不破坏引用它的所有对象的情况下更改表,还可以在部署所有应用程序代码之前部署所有数据库更改(在分布式体系结构中,考虑可下载的桌面应用程序)或iPhone应用程序,人们远程连接到您的数据库,这是至关重要的。)
例如,如果向表中添加新列,它应该是NULLable或具有默认值,以便INSERT语句不需要立即更新以引用它。存储过程可以逐步更新以接受表示此列的新参数,并且它应该是可空/可选的,以便应用程序不需要立即知道该列。等
这还要求您的原始插入语句包含显式列列表。如果你只是说:
INSERT dbo.table VALUES(@p1, @p2, ...);
然后,这会使您的更改向后兼容变得更加困难。
至于拆除柱子,那有点难度。 SQL Server中的依赖关系并不完美,但您应该能够从这些动态管理对象中找到大量信息:
您可能还会发现这些文章很有趣: