0

私がいる非常に単純な苦境。

基本的に、主キー/外部キーとカスケード制約を持つ 4 つのテーブルがあります。

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それとも最初からテーブルを作成し、データをコピーしてから古いテーブルを削除する必要がありますか?

4

1 に答える 1

0

質問を締めくくるだけです。

私が最初に使用することを提案したソリューションはsp_rename oldTableName, newTableName、私にとってはうまくいきました。

しかし、@jaques が指摘したようstored proceduresに、これらのテーブルにアタッチされている可能性のあるものにはうんざりしている必要があります。ストアド プロシージャはテーブル名に基づいて機能するためです。

于 2015-03-30T14:37:03.647 に答える