Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server使用约束重命名表_Sql Server_Table Rename_Sp Rename - Fatal编程技术网

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
上,而不是名称上。这意味着你不应该有问题。导致问题的原因是引用该对象的过程、函数等。我已经考虑过这一点,并将所有过程转换为服务器端代码,这样就不会有问题了。