SSMS 中表的哪些更改会导致 DROP/CREATE,并且可以使用 TSQL 始终避免这种情况吗?

3N1*_*GM4 5 sql-server ssms t-sql alter-table

我知道在某些情况下,通过 SSMS 的 GUI 对表进行某些更改(例如,更改列的类型)将导致表被删除并重新创建。

我的问题是,对于导致这种行为的具体变化是否存在完整的定义?通过运行而不是使用 SSMS GUI 是否可以始终避免这种行为ALTER TABLE(如果不能,哪些可以避免,哪些不能)?

Ran*_*est 0

除了更改数据类型的示例之外,会导致 DROP 和 CREATE 的事情通常涉及对主键/集群键的更改。移动列就可以做到这一点,更改基于文本的列的排序规则也可以做到这一点。

我不确定您本身想避免什么

ALTER 在代码中可能看起来更优雅,但它也可能在后台完成大量工作,冒着截断或失败的风险,因此删除和创建被认为更好。

我认为他们的经验法则是就地数据转换风险太大,尤其是对于已经包含数据的表,因此创建一个新的更有意义。