web-dev-qa-db-ja.com

SQL Server 2014でプライマリキーのVARCHARの長さを変更する方法

SQL Server 2014のライブラリテーブルのコード列でVARCHARの長さを20から25に変更する必要がありますが、SSMSは問題のライブラリテーブルがリンクされているすべてのテーブルを削除および再作成したい。

すべてのテーブルを削除せずにPRIMARY KEYのVARCHARの長さを変更する方法はありますか?

2
M. Pop

長さを増やしているので、列を変更するだけで済みます。次に例を示します。

CREATE TABLE dbo.T1
    (
      C1 VARCHAR(20) NOT NULL
                     CONSTRAINT PK_T1 PRIMARY KEY ,
      C2 INT
    );
GO

INSERT  INTO dbo.T1
VALUES  ( 'test', 1 ),
        ( 'test2', 2 );
GO

ALTER TABLE dbo.T1 ALTER COLUMN C1 VARCHAR(25) NOT NULL;

https://docs.Microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sqlALTER TABLE構文の詳細を読む

2
Nic

ALTER TABLEコマンド、Nicの回答と同様。ただし、問題は、テーブルを参照する外部キーがあることです。

これを回避するには、外部キーをスクリプトで削除し、それらを削除して変更を加え、テーブルを更新した後でそれらを再作成します。

以下は、外部キーを削除して作成するコマンドをスクリプト化するための、Aaron Bertrandによるスクリプトへの link です。

注:許可されたすべての値が他のテーブルに収まるように、それを使用する他のテーブルの列も更新します。

2
RDFozz