SQL Server 2014のライブラリテーブルのコード列でVARCHAR
の長さを20から25に変更する必要がありますが、SSMSは問題のライブラリテーブルがリンクされているすべてのテーブルを削除および再作成したい。
すべてのテーブルを削除せずにPRIMARY KEYのVARCHAR
の長さを変更する方法はありますか?
長さを増やしているので、列を変更するだけで済みます。次に例を示します。
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-sql でALTER TABLE
構文の詳細を読む
ALTER TABLE
コマンド、Nicの回答と同様。ただし、問題は、テーブルを参照する外部キーがあることです。
これを回避するには、外部キーをスクリプトで削除し、それらを削除して変更を加え、テーブルを更新した後でそれらを再作成します。
以下は、外部キーを削除して作成するコマンドをスクリプト化するための、Aaron Bertrandによるスクリプトへの link です。
注:許可されたすべての値が他のテーブルに収まるように、それを使用する他のテーブルの列も更新します。