17

SQL Server のテーブルの列のデータ型を変更したいと考えています。次のステートメントを使用しました。

ALTER TABLE dbo.tbltest  
ALTER COLUMN ID uniqueidentifier

しかし、それはエラーをスローします

オペランド型の衝突: bigint は uniqueidentifier と互換性がありません

4

5 に答える 5

31

整数から に変換することはできませんuniqueidentifier。しかし、あなたはこのようにすることができます。

  1. 最初にテーブルから古いデータを削除します。

  2. 列を何らかのテキスト形式 ( などVARCHAR(200)) に変更します。

    ALTER TABLE dbo.tbltest  
    ALTER COLUMN ID VARCHAR(200)
    
  3. 今また
    ALTER TABLE dbo.tbltest  
    ALTER COLUMN ID uniqueidentifier
    

明確にするために、列を数値からuniqueidentifier直接変換することはできませんが、に変換numericするvarcharことはできますuniqueidentifier

于 2012-06-20T08:19:48.733 に答える
4

最初に列を追加し(おそらく、列を既存のデータのある行に正常に追加できるように、デフォルトまたはnull可能)、必要な値または必要な値に更新し、キーを変更する必要があります(主キーの変更の場合)新しい列に移動してから、このテーブルの外部キーも変更します)、古い列を削除し、必要に応じて新しい列を変更します(たとえば、IDシードの設定、null可能の削除など)。

于 2012-06-20T08:15:38.793 に答える
3

Entity Framework を使用している人への注意:
明らかに、複雑なリレーションシップを持つ大規模なデータベースがある場合、すべてのリレーションシップと ID 列を削除して、それらを再度追加するのは非常に困難です。

生成されたモデル (.edmx) を更新する方がはるかに簡単です

はい、Visual Studio では文句を言わずにデータ型を更新できます。実際、.edmx ファイルを保存すると、関係が検証されます。見逃した可能性のあるフィールドはすべてエラーとして表示されます。

完了したら、モデルからデータベースを再生成できます。ブーム、完了。

于 2013-10-29T04:54:02.997 に答える
0

シンの答えがうまくいかない場合は、おそらくテーブルを削除して再作成する必要があります。

于 2016-11-14T21:12:55.143 に答える