使用liquibase回滚更改的表的策略

时间:2014-04-24 04:30:24

标签: sql-server rollback liquibase

我想将我的数据库从v1.0迁移到v1.1,其中一个更改是对Table1中某些值的更新。我知道对于INSERT,我可以轻松地包含一个删除我刚刚添加的值的回滚命令,但是如何更改表格?有没有办法存储当前值并将此信息用于回滚过程(将来)?

感谢。

2 个答案:

答案 0 :(得分:1)

SQL Server中的任何DDL操作(ALTER TABLE是其中之一)都是事务性的。

这意味着您可以打开事务,对数据库对象进行更改,并回滚事务,就像从未发生过一样。

有一些例外,主要是涉及文件系统操作的操作(将文件添加到数据库等)。

答案 1 :(得分:1)

您可以在变更集中指定<rollback>块(docs)来描述如何回滚更改。在回滚标记中,您可以使用原始SQL或<createTable>标记重新描述表在更改之前的外观。

您还可以在rollback标记中指定changeSetId和changeSetAuthor,以指向将重新创建表的现有changeSet。如果自创建对象以来没有其他更改,但是如果自首次创建对象以来修改了对象的多个changeSet,则此方法可以更轻松。