Sql server SQL Server使用约束重命名表
我的处境很简单 基本上,我有四个带有主键/外键和级联约束的表Sql server SQL Server使用约束重命名表,sql-server,table-rename,sp-rename,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]
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\u rename
重命名表是否足够安全?还是我应该从头开始创建表,跨多个表复制数据,然后删除旧表?只是为了结束这个问题
我最初提出的使用sp_rename oldTableName,newTableName
的解决方案对我来说效果很好
但正如@jaques所指出的,您需要对可能附加到这些表的任何
存储过程感到厌倦。因为存储过程与表名无关。据我所知,约束链接在objectid
上,而不是名称上。这意味着你不应该有问题。导致问题的原因是引用该对象的过程、函数等。我已经考虑过这一点,并将所有过程转换为服务器端代码,这样就不会有问题了。