3

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

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

可能有 1-2 或 30 个存储过程可能会受到影响。

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

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

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

如何以最好的方式处理?

  1. 保留一个包含此类信息的数据库表,并在每次更改存储过程时更改该表?

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

  3. 有人有更好的主意吗?

4

1 回答 1

1

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

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

这也要求您的原始插入语句包含一个明确的列列表。如果你只是说:

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

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

至于删除列,嗯,这有点困难。依赖关系在 SQL Server 中并不完美,但你应该可以从这些动态管理对象中找到很多信息:

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

于 2013-11-14T13:09:56.883 回答