0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLServerで自動採番の変更とカラムの属性の修正方法

0
Posted at

例えば下記のようなテーブルがあったとします。

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_ididという名前にしたい場合は、名前を変更します。

EXEC sp_rename '[test].[dbo].[adminusers].new_id', 'id', 'COLUMN';
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?