![]() |
1
1
一般来说,你不能这样做。 然而,假设这样的回滚是有意义的,它意味着您试图保留的数据独立于您想要恢复的模式更改。 解决这一问题的一种方法是:
如果模式更改不会使创建的脚本无效(例如,更改列的数量是很棘手的),那么上述方法将很好地工作。 这个 question 在MS SQL中提供用于生成脚本的工具的详细信息。 |
![]() |
2
2
但是,如果确实删除了列,那么您将丢失数据,因为这些列/表(假定)将包含一些数据。由于我假定任何回滚都是临时的,因为发现了一个bug,所以在修复错误的同时进行回滚,然后或多或少地重新安装相同的更改,如果您丢失了数据,并且在修复系统时必须重新输入,那么用户可能会非常不安。 我建议您只允许添加表和列,不允许修改或删除,然后您可以只回滚代码并保持数据原样,如果您有大量的回滚,您可能最终会得到一些未使用的列,但这种情况不会经常发生,因为有人错误地添加了表/列,在这种情况下,DBA可以手动取出。 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 6 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 7 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 7 月前 |