我继承了一个数据库设计,它有一个重要的缺陷:核心表的主键(大约有一半的其他表引用,其中许多具有检查它的约束)是 varchar(20)。
这让我有点困惑,但其背后的理由是明智的。数字(迄今为止,它们一直是数字)是两个数据字段的组合(在组合时保证是唯一的),但通常以一个或多个 0 开头。
我确信有更好的方法来解决这个问题,但是数据库模式的完整更改目前超出了范围。
问题是我们有一个新客户,他的 ID 组合为 25 个字符。
当我们为这个客户的站点创建数据库时,我更新了所有字段。这花了我一天的大部分时间——我在表创建/修改级别上对 SQL 做的不多,大约有 25 个表引用了这个字段(以及十几个或更多的存储过程,它们将它的值作为参数)并且每个表都有许多必须删除的约束,以便可以编辑表。
总的来说,更新一个数据库几乎花了我一整天的时间。这是一项漫长而无聊的工作,但一个错误可能会破坏数据库架构。我必须编写一个脚本,以正确的顺序从表中删除约束,更新所有字段,并重新添加所有约束。
有没有更简单的方法来做到这一点?我必须更改主键的字段长度,该主键也是 20-25 个表上的外键,并且我必须为大约 8 个不同的数据库执行此操作。约束在每个数据库上的名称略有不同,因此我的脚本不适用于其他数据库。