2011-02-10 16 views
2

私は現在、外部テーブルからのユーザーIDであるbigintとして格納されている外部ユーザー参照を含むSQL Server 2008テーブルを持っています。私は電子メールアドレス、公開IDなどを外部識別子として使用できるようにこれを拡張したいと考えています。既存のデータに影響を与えずに、列のデータ型をbigintからvarcharに変更することは可能ですか?SQL Serverテーブルの列のデータ型をbigintからvarcharに変更した後に、そのデータ型を変更することはできますか?

+0

はい、あなたは 'varchar'サイズを十分に大きく定義することができます。それが十分でない場合、SQL Serverはエラーをスローします – codingbadger

+0

テストするのが簡単です。 –

+0

私はあなたが保存した外部識別子のタイプを教えてくれる追加の列も追加していると思いますか?または、これらの値のドメインが重複しないことを100%確信しているか、そうであれば、それらの値を区別する手段は必要ありませんか? –

答えて

6

はい、それは、何の問題可能性がないはず - 限り、あなたはあなたがこのT-SQLのようなものを使用する必要があると思います

:-) BIGINT値を保持するのに十分なごVARCHARフィールドビッグ作るよう:

ALTER TABLE dbo.YourTable 
    ALTER COLUMN YourColumnName VARCHAR(50) -- or whatever you want 

とする必要があります。 BIGINTの値はすべて文字列に変換できるため、このコマンドはうまく動作し、データを失う危険はありません。

+0

しかし、SQL Serverは、クラスタ化されたインデックスが再構築されるまで、古い「bigint」列の領域を割り当て続けます。 –

関連する問題