【发布时间】:2014-12-01 13:17:55
【问题描述】:
我所处的困境非常简单。
基本上我有四个表,主键/外键和级联约束是这样的。
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 重命名表是否足够安全,或者我应该求助于从头开始创建表、复制数据然后删除旧表?
【问题讨论】:
-
据我所知,约束链接在
objectid而不是名称上。这意味着您应该没有问题。会导致问题的是引用该对象的过程、函数等。 msdn.microsoft.com/en-us/library/ms188351.aspx -
我已经考虑过了,并将我的所有程序都转换为服务器端代码,所以这应该不是问题。
标签: sql-server table-rename sp-rename