为什么SQL Server Management Studio在更改脚本中生成两个重命名?

我刚刚使用SSMS 2008 Express创build了一个更改脚本,用于重命名表中的两列。 但是,更改脚本包含四个重命名,使用中间临时名称。 为什么是这样?

EXECUTE sp_rename N'dbo.PerformanceCategories.WeekToDateFormula', N'Tmp_WeekToDateFormulaActual_4', 'COLUMN' GO EXECUTE sp_rename N'dbo.PerformanceCategories.MonthToDateFormula', N'Tmp_MonthToDateFormulaActual_5', 'COLUMN' GO EXECUTE sp_rename N'dbo.PerformanceCategories.Tmp_WeekToDateFormulaActual_4', N'WeekToDateFormulaActual', 'COLUMN' GO EXECUTE sp_rename N'dbo.PerformanceCategories.Tmp_MonthToDateFormulaActual_5', N'MonthToDateFormulaActual', 'COLUMN' 

我不认为你的问题有一个很好的答案,除了自动脚本生成工具有时必须牺牲效率,以确保它们不会在奇怪的angular落案件中引起问题的事实。

这里没有内部信息,但也许他们正在考虑像下面的情况:

这位首席执行官参加了一个激动人心的研讨会,想出了一个疯狂的想法,重新定义公司的组织方式,包括每个“级别”的命名:

 Company >> Section Division >> Office Office >> Branch 

如果您只是简单地生成直sp_rename脚本,如下所示:

 sp_rename 'org.Company', 'Section', 'COLUMN' sp_rename 'org.Division', 'Office', 'COLUMN' sp_rename 'org.Office', 'Branch', 'COLUMN' 

第二个将失败,因为一个名为“办公室”的字段已经存在。 在这种情况下,你可以通过sorting来解决这个问题,以便第二个之前的第三个重命名,但是如果你的重命名实际上是这样:

 Address1 >> Address2 Address2 >> Address3 Address3 >> Address1 

然后没有任何命令可以让你执行重命名没有错误。 您必须先分配唯一的临时名称。