gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:41:07 25 4
gpt4 key购买 nike

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

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

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

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

搜索“插入表名”可能是个好主意,但您可能在这 2 个单词或 2 个空格之间有一个空格,或者一个制表符……也许表名写成“[表名]”所有 3 个都相同(插入/更新/删除。)

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

这是如何以最佳方式处理的?

  1. 用这种信息保存一个数据库表,并在每次更改存储过程时更改该表?

  2. 在每个insert/update/delete的旁边保留一些特定的代码作为注释,这样你就可以搜索到你需要的东西了?示例:“插入表名”、“更新表名”、“删除表名”

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

最佳答案

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

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

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

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

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

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

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

关于sql - 添加/删除表格的列 - 代码维护/优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com