例えば下記のようなテーブルがあったとします。
CREATE TABLE adminusers(
id integer NOT NULL,
name varchar(20) NOT NULL,
email varchar(20) NOT NULL,
password varchar(20) NOT NULL,
primary key (id)
)
emailの型をvarchar(40)にしたい場合は、下記のように書きます。
ALTER TABLE [test].[dbo].[adminusers] ALTER COLUMN name varchar(20);
自動採番の変更
上記のCREATE文では、INSERTしても自動採番されません。型をINDENTITYにする必要があります。
なのでこれを修正します。
〇既存の制約やインデックスを削除する:
ALTER TABLE <テーブル名>
DROP CONSTRAINT PK_adminusers_id; -- PK_adminusers_id は主キーの名前。正確な名前を確認してください。
※主キーの名前がわからない場合
主キーの名前がわからない場合は、SSMSでテーブルを右クリックし、「デザイン」を開いて「キーとインデックス」ウィンドウで確認できます。または、以下のクエリで確認できます。
SELECT
kc.name AS ConstraintName
FROM
sys.key_constraints kc
JOIN
sys.tables t ON kc.parent_object_id = t.object_id
WHERE
t.name = 'テーブル名' AND t.schema_id = SCHEMA_ID('dbo') AND kc.type = 'PK';
一時的に新しいID列を追加する:
ALTER TABLE <テーブル名>
ADD new_id INT IDENTITY(1,1) PRIMARY KEY;
古いID列を削除する
新しいID列が正常に機能していることを確認したら、古いid列を削除します。
ALTER TABLE <テーブル名>
DROP COLUMN id;
新しいID列の名前を元の名前に変更する(オプション):
もしnew_idをidという名前にしたい場合は、名前を変更します。
EXEC sp_rename '[test].[dbo].[adminusers].new_id', 'id', 'COLUMN';