我想将我的数据库从v1.0迁移到v1.1,其中一个更改是对Table1中某些值的更新。我知道对于INSERT,我可以轻松地包含一个删除我刚刚添加的值的回滚命令,但是如何更改表格?有没有办法存储当前值并将此信息用于回滚过程(将来)?
感谢。
答案 0 :(得分:1)
SQL Server中的任何DDL
操作(ALTER TABLE
是其中之一)都是事务性的。
这意味着您可以打开事务,对数据库对象进行更改,并回滚事务,就像从未发生过一样。
有一些例外,主要是涉及文件系统操作的操作(将文件添加到数据库等)。
答案 1 :(得分:1)
您可以在变更集中指定<rollback>
块(docs)来描述如何回滚更改。在回滚标记中,您可以使用原始SQL或<createTable>
标记重新描述表在更改之前的外观。
您还可以在rollback标记中指定changeSetId和changeSetAuthor,以指向将重新创建表的现有changeSet。如果自创建对象以来没有其他更改,但是如果自首次创建对象以来修改了对象的多个changeSet,则此方法可以更轻松。