2017-03-31 17 views
0

データベースプロジェクトの主キー列をintからuniqueidentifierに変更したいと思います。 SQL Serverがintを​​に変換できないため、タイプを変更しようとしましたが、予測可能なエラーが発生しました。 (Original Image):私は、SQL Server Management Studioの中でそれを行う方法を知っているデータベースプロジェクトのintをuniqueidentifierに変更しました

+ ------------ + -------------- + ----------- + ------- + 
| Name   | Data_Type  | Allow Nulls | Default | 
+ ------------ + -------------- + ----------- + ------- + 
| OrderImageId | int   | No   |   | 
| OrderId  | int   | No   |   | 
| Image  | varbinary(MAX) | Yes   |   | 
| FileName  | nvarchar(Max) | Yes   |   | 
+ ------------ + -------------- + ----------- + ------- + 

create table [dbo].[OrderImages] 
(
    [OrderImageId] int not null primary key identity, 
    [OrderId] int not null 
     Constraint [FK_OrderImages_Orders] foreign key (OrderId) references [Orders]([OrderId]), 
    [Image] varbinary(Max) null, 
    [FileName] nvarchar(max) null 
) 

(GUID列などのためにPKを設定し、それを埋める、PKを削除し、別のGUID列を作成)、それはそれを行うことが可能ですデータベースプロジェクトで?私のPKカラムにFKがあるとどうなりますか?

答えて

2

これを行うには、新しいテーブルを作成してデータを移行し、既存の整数データを置き換えるために使用するguidを置き換える必要があります。

ここでは、ユニークな識別子を使用するのは良い考えではありません。断片化を引き起こす128ビットの本質的にランダムなデータです。注文ごとに複数の画像を含む可能性がある40億枚以上の画像があると思われる場合は、bigintを使用できます。

注文ごとに複数のイメージが存在しない場合は、(ID制約なしの)プライマリキーとしてOrderIDを使用し、OrderIDにノンクラスタードインデックスを追加する必要がなくなります。

関連する問題