在SQL Server 2008中重命名列时出现奇怪的行为

Pet*_*ter 10 ssms sql-server-2008 change-script

我需要编写一些代码来重命名SQL Server 2008中的列.
当在Management Studio中编写脚本时,我得到了一个双重命名:

NAME1 ==> TEMPNAME ==> NAME2

BEGIN TRANSACTION
GO
EXECUTE sp_rename N'dbo.Table_1.columFirstName', N'Tmp_columSecondName_2', 'COLUMN' 
GO
EXECUTE sp_rename N'dbo.Table_1.Tmp_columSecondName_2', N'columSecondName', 'COLUMN' 
GO
ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Run Code Online (Sandbox Code Playgroud)

但是,当我一次性完成时,它的工作正常.

为什么首先将列重命名为临时名称?编码重命名算法时是否有意义?

谢谢!

小智 8

您可以在两列之间交换列名.Management Studio通过将所有列重命名为临时名称,然后将它们重命名为最终名称来支持该功能.

Blorgbeard:在设计窗口右键单击菜单中,有一个生成更改脚本选项.

  • 这可能就是答案,但我不清楚. (2认同)
  • 不是?开关A和B,你需要A到TMP,B到A,TMP到B.要将A,B,C转换为B,C,A你需要A到TMP,C到A,B到C,B到TMP .要将A,B,C转换为C,A,B,您需要A到TMP,B到A,C到B,TMP到C.这很复杂,所以为什么不按照它们的方式来做. (2认同)
  • 有趣的东西 - 还有其他地方SMSS生成比所需更复杂的脚本以支持更多异国情调,所以你的答案对我来说很有意义. (2认同)