如何使ALTER COLUMN具有幂等性?

时间:2015-11-10 13:31:13

标签: sql-server

我有一个包含以下语句的迁移脚本:

ALTER TABLE [Tasks] ALTER COLUMN [SortOrder] int NOT NULL
  1. 如果我跑两次会怎么样?它会第二次改变吗? MS SQL Management Studio只报告"命令已成功完成",但没有详细说明他们是否确实做了任何事情。

  2. 如果它还不是idempotent,我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

我想说第二次,SQL Server检查元数据并且什么也不做,因为没有任何改变。

但如果您不喜欢多次执行的可能性,可以在脚本中添加简单的条件:

glBindBuffer

SqlFiddleDemo

答案 1 :(得分:1)

  1. 第二次执行时,会执行查询但由于表已经更改,因此无效。所以它对桌面没有任何影响。

  2. 当脚本执行两次时,没有任何更改。

  3. 这是一篇很好的MSDN阅读:Inside ALTER TABLE

      

    让我们看看SQL Server在执行ALTER时内部执行的操作   TABLE命令。 SQL Server可以在任何中执行ALTER TABLE命令   有三种方式:

         
        
    1. SQL Server可能只需要更改元数据。
    2.   
    3. SQL Server可能需要检查所有现有数据以确保   它与更改兼容,但只更改元数据。
    4.   
    5. SQL Server可能需要在物理上更改每一行。
    6.