SQL Server重命名具有约束的表

时间:2014-12-01 13:17:55

标签: sql-server table-rename sp-rename

我现在非常简单的困境。

基本上我有四个主/外键表和类似的级联约束。

CREATE TABLE [Board]
(
 [BoardId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED ( [BoardId] )
,[Name] [nvarchar](100) NOT NULL
,[Description] [nvarchar](max) NULL
,[PortalId] [int] NOT NULL FOREIGN KEY ( [PortalId] ) REFERENCES Portals ( [PortalID] ) ON DELETE CASCADE ON UPDATE CASCADE
,[OrganizerId] [int] NOT NULL
,[GroupId] [int] NULL
,[ModuleId] [int] NOT NULL FOREIGN KEY ( [ModuleId] ) REFERENCES Modules ( [ModuleID] ) ON DELETE CASCADE ON UPDATE CASCADE
,[CreatedByUserId] [int] NOT NULL
,[CreatedOnDate] [datetime] NOT NULL
,[LastModifiedByUserId] [int] NULL
,[LastModifiedOnDate] [datetime] NULL
)
GO

我需要重命名原始表格。我过去使用sp_rename oldTableName, newTableName重命名了表,但没有使用主要,外来和级联约束的表。

sp_rename重命名表是否足够安全,还是应该从头开始创建表,复制数据然后删除旧表?

1 个答案:

答案 0 :(得分:0)

只是为了结束这个问题。

我最初提议使用sp_rename oldTableName, newTableName的解决方案对我来说很好。

但正如@jaques指出的那样,你需要对可能附加在这些表中的任何stored procedures感到厌倦。因为存储过程使用表名。