私は次の鍵を持っています:
ALTER TABLE dbo.Table ADD CONSTRAINT PK_ID PRIMARY KEY CLUSTERED
(
ID ASC
)
だから私はID列にクラスター化インデックスと主キーを持っています。次に、クラスター化インデックスを削除する必要があります(別の列に新しいクラスター化インデックスを作成したい)が、主キーは保持します。出来ますか?
私は次の鍵を持っています:
ALTER TABLE dbo.Table ADD CONSTRAINT PK_ID PRIMARY KEY CLUSTERED
(
ID ASC
)
だから私はID列にクラスター化インデックスと主キーを持っています。次に、クラスター化インデックスを削除する必要があります(別の列に新しいクラスター化インデックスを作成したい)が、主キーは保持します。出来ますか?
1つのステートメントでは不可能ですが、DDLはMSSQLではトランザクションであるため、トランザクション内ですべてを実行するだけで、主キーがないときに他のセッションがテーブルにアクセスするのを防ぐことができます。
begin tran
alter table dbo.[Table] drop constraint pk_id
alter table dbo.[Table] add constraint pk_id primary key nonclustered (id)
commit tran
インデックスは制約の物理的な実装であるため、これは不可能です。