[ SQL Server ] NULL値の許可や主キーの追加ができない

Pocket

SQL Server Management Studio で列の NULL値を許可しないように変更したり、主キーを追加しようとすると、次のようなエラーになることがあります。

変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要になります。再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。

スポンサーリンク

出力されるダイアログ

出力されるダイアログは次の通りで、変更することができません。

保存エラー

原因

エラーとなったテーブルは、アクセスファイルから SQL Server にテーブルをインポートしたテーブルです。この時、主キーの項目であるにも拘わらず NULL値を許可した状態で取り込みました。これがいけなかったようです。

出力されるダイアログのメッセージにあるように、オプション設定をオフにすることで、強引に変更することも出来そうですが、後々、面倒なことになるのは避けたいのです。

実際のところ、何度でもインポートやり直せる環境ですので、インポートからやり直せばよいだけなのですが。。

SQL で変更するのはOK

調べてみると、SQL を直接発行することで変更はできそうでした。今回は、NULL を許可しないように変更して、プライマリキーを設定する2つの変更が必要ですので、発行する SQL は次の2つです。

-- NULL 値を許可しないように変更
alter table テーブル名 alter column カラム名 int not null

-- 主キーを設定
alter table テーブル名 add primary key (カラム名)

ただし、NULL 値を許可したままの状態のカラムをプライマリキーに設定することはSQLでもエラーとなりました。エラーの内容は次のようなものです。

テーブル ‘テーブル名’ の NULL 値が許可される列に PRIMARY KEY 制約を定義できません。

勝手にイイ感じに変更してくれるわけではないようです。残念。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *