【问题标题】:What is the advantage of using sp_rename to rename a SQL table?使用 sp_rename 重命名 SQL 表有什么好处?
【发布时间】:2023-03-14 03:47:01
【问题描述】:

我在 sql server 2012 中有一个需要重命名的 sql 表。我知道在其他数据库系统中执行此操作的方法如下:

ALTER TABLE table_name
  RENAME TO new_table_name;

但是,SQL Server 似乎需要不同的语法。在 SQL Management Studio 中,我在设计视图中重命名了表并右键单击生成更改脚本,它产生了以下内容:

BEGIN TRANSACTION
GO
EXECUTE sp_rename N'table_name', N'new_table_name', 'OBJECT' 
GO
ALTER TABLE new_table_name SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

使用sp_rename 是重命名的最佳做法吗?

它还生成了一个附加行来设置 lock_esclation = 表。这是必需的吗?

【问题讨论】:

  • ALTER TABLE ... RENAME ... 语法在我使用过的任何版本的 SQL Server 上都无效 - 它也不会出现在 MSDN 上。从快速谷歌来看,它似乎是 postgresql 语法。
  • 确实如此。甚至MSDN 在其示例中也列出了sp_rename。 (另外,回复:LOCK_ENCAPSULATION,stackoverflow.com/questions/1703597/…

标签: sql sql-server sql-server-2012


【解决方案1】:

我猜(略带讽刺意味的)答案是使用sp_rename 的优势在于它实际上是 SQL Server 上的有效语法,而前者仅在 PostgreSQL 上有效 (documentation)。

要查看ALTER TABLE 的有效选项 - 请参阅MSDN

这里是一个使用Sp_rename的例子:

EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';

Documentationsp_rename

【讨论】:

    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2010-11-26
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多