• ベストアンサー
  • 暇なときにでも

DB2 「既存カラムへのnot null制約の付与・削除方法について」

DB2有識者の方々へ マニュアルをみたのですが、alter tableでは駄目なのでしょうか? すみません。よろしくお願い致します。 <質問1> 既存カラムへnot null制約を付与したいのですが、コマンドを教えてください <質問2> 既存カラムについた、not null制約を削除したいのですが、コマンドを教えてください よろしくお願い致します。

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • yukion
  • ベストアンサー率42% (3/7)

ALTER TABLEでできることは以下の変更なので'not null'の付加・削除はできません。tableの再作成を行いデータのRELOADが必要になります。 ・ 1 つまたは複数の列を表に追加する ・ 主キーの追加、あるいはドロップを行う ・ 1 つまたは複数のユニーク制約、または参照制約の追加、あるいはドロップを行う ・ 1 つまたは複数のチェック制約定義の追加、あるいはドロップを行う ・ 表除去制約の追加、あるいはドロップを行う ・ VARCHAR 列の長さを変更する ・ 参照タイプ列を変更して、有効範囲を追加する ・ 生成される列の生成式を変更する ・ 1 つまたは複数のチェック制約属性、あるいは参照制約属性を変更する ・ 区分化キーの追加、あるいはドロップを行う ・ 表属性(データ・キャプチャー・オプション、pctfree、ロック・サイズ、追加モード など) を変更する ・ 表を記録されていない初期状態(NOT LOGGED INITIALLY) に設定する

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ALTER TABLEでは「NOT NULL」の付加・削除はできませんでした。 教えていただいたとおり、tableの再作成で対処しました。 大変助かりました。どうもありがとうございました。

その他の回答 (1)

  • 回答No.1

こんにちは。 >>既存カラムへnot null制約を付与したいのですが、コマンドを教えてください 「not null」はオプション項目なので、列の定義情報を便宜的に変更してから付与してください。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET DATA TYPE そのまま NOT NULL WITH DEFAULT デフォルト値 >>既存カラムについた、not null制約を削除したいのですが、コマンドを教えてください 多分ドロップできたはず・・・。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL 今手元にないので、自信ないです・・・。 (^^ゞ

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございました。 No2の方が回答してくれたとおり、DB2では 「NOT NULL」の付与・削除はALTER TABLEでは できないようです。 どうもありがとうございました。

関連するQ&A

  • NOT NULL 制約の削除

    MSSQL(SQLServer2000)にて、NOT NULLの列制約をはずすにはどうしたらよいのでしょうか。 ALTER TABLE <テーブル名> ALTER COLUMN <列名> DROP NOT NULL をやってみたのですが、構文エラーになってしまいます。 よろしくお願いします。

  • テーブルのフィールドにNot null制約を付けたい

    お世話になります。 既存テーブルにフィールドを追加する方法は わかっているのですが、その追加したフィールドに not null制約を付けるにはどのようなコマンドを 実行する必要があるのでしょうか。 ↓のコマンドには制約をつけるオプションはないですよね。。 ALTER TABLE テーブル名 ADD (カラム名 カラム定義) よろしくお願いします。

  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • NOT NULL制約カラムにNULLが格納される

    SQLite3でテーブル作成する際、カラムをテキスト型にして、NOT NULL制約をつけているのですが、NULLも普通にINSERTされてしまいます なんででしょうか?

  • MySQLのNOT NULL制約について

    MySQLでは、あるカラムをNOT NULL制約にしていたとしても、文字列型には空文字が、数値型には0を保存できます。 NULL、空文字、0をそれぞれ区別している仕様自体は問題ないと思いますが、NOT NULL制約のようにあるカラムで特定の値を許可しないような設定でできないのでしょうか。

    • ベストアンサー
    • MySQL
  • DB2でUNIQUE制約を削除したい

    DB2で以下のように明示的な名前のないUNIQUE制約を削除したいのですが、よい方法をご存じの方がおられましたらご教授ください。 (例) 1. 表の作成 CREATE TABLE TEST ( COL1 INT NOT NULL) 2. 明示的な名前を作成せずにUNIQUE制約を作成 ALTER TABLE TEST ADD UNIQUE (COL1); 上記のように名前指定しなかったUNIQUE制約を ALTER TABLE文で削除したいのですが、どのように すればよろしいのでしょうか? マニュアルの構文では制約名を指定する必要あるようで、 syscat.tabconstカタログで自動でつけられた制約名を調べた後、 以下のように指定したところ制約は削除されました。 (例) ALTER TABLE TEST DROP CONSTRAINT SQL090123084403480 しかしプログラムの修正が少なくなるよう、制約名を調べずにALTER TABLE 一文で削除できないものかと悩んでおります。 もしくはストアドプロシージャでも構いません。 よろしくお願いします。

  • MySQLのカラムを削除したが,それを復元したい

    MySQLのテーブル内のカラムを再編成しようとしています. そこで,カラムAをALTER TABLE DROPで削除しました. その直後,カラムAは必要であることに気づきました. テーブルのバックアップを取っていないので,困ります. この削除コマンドをキャンセル(UNDO)したり,削除したカラムを復元できますか?

  • DB2 の SQL で NULL値を空文字として取得したい。

    2つのテーブルをLEFT OUTER JOIN等によって結合した場合、値がNULLになるカラムが出てくる事がよくあります。 この場合、取得する値をnullではなく空文字(長さ0の文字列)として取得する事は可能でしょうか? IS NULL関数やNVS関数など、他のDBMSで使えた方法がエラーとしてはじかれてしまいました。何か特別なコマンドがあるのかも知れませんが、手元のマニュアルにありません。オンラインマニュアルなどがあればいいのですが、今の所見つかっていません。 どなたかご存知でしたら、教えて頂けないでしょうか。

  • 参照元テーブルのカラムをNOT NULL属性に変更

    参照元テーブルのカラムをNOT NULL属性に変更した場合、参照先のマテリアライズドビューに影響がありますか。マテリアライズドビューを作り直す必要がありますか。 バージョン=ORACLE11g

  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します