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

3
什么是维护大型项目代码的最佳方法?
假设您有1000个存储过程,并且您需要向表添加新列(或删除列)。
可能会受到1-2或30个存储过程的影响。
仅仅通过搜索表名可能不够好,例如您只需要知道表在哪些地方进行了插入/更新/删除操作。
搜索“insert tablename”可能是一个好主意,但是这两个单词之间可能有一个空格或两个空格,或者有一个TAB键...也许表名像“[tablename]”一样写。对于所有三种情况(insert / update / delete),都是如此。
我基本上正在寻找某种“限制依赖项”。
如何以最佳方式处理这个问题?
1.保留这种信息的数据库表,并在每次更改存储过程时更改该表? 2.在每个插入/更新/删除操作旁边作为注释保留一些特定的代码,这样,您就可以搜索所需内容。 例如:“insert_tablename”,“update_tablename”,“delete_tablename”。 3.是否有更好的想法?
1个回答

1
理想情况下,更改应向后兼容。这不仅可以让您在不破坏引用它的所有对象的情况下更改表格,还可以让您在部署所有应用程序代码之前部署所有数据库更改(在分布式架构中,考虑可下载的桌面应用程序或 iPhone 应用程序,在这些应用程序中,人们远程连接到您的数据库,这是至关重要的)。
例如,如果向表格添加新列,则应使其为 NULLable 或具有默认值,以便 INSERT 语句不需要立即更新以引用它。存储过程可以逐步更新以接受表示此列的新参数,并且应该是可空/可选的,以便应用程序不需要立即了解此列。等等。
这还要求您的原始插入语句包括显式列列表。如果您只是说:
INSERT dbo.table VALUES(@p1, @p2, ...);

那么这使得将您的更改向后兼容变得更加困难。

至于删除列,那就有点棘手了。在SQL Server中,依赖关系并不完美,但您应该能够从这些动态管理对象中找到很多信息:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接