DB2有識者の方々へ
マニュアルをみたのですが、alter tableでは駄目なのでしょうか?
すみません。よろしくお願い致します。

<質問1>
既存カラムへnot null制約を付与したいのですが、コマンドを教えてください

<質問2>
既存カラムについた、not null制約を削除したいのですが、コマンドを教えてください

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ALTER TABLEでできることは以下の変更なので'not null'の付加・削除はできません。

tableの再作成を行いデータのRELOADが必要になります。

・ 1 つまたは複数の列を表に追加する
・ 主キーの追加、あるいはドロップを行う
・ 1 つまたは複数のユニーク制約、または参照制約の追加、あるいはドロップを行う
・ 1 つまたは複数のチェック制約定義の追加、あるいはドロップを行う
・ 表除去制約の追加、あるいはドロップを行う
・ VARCHAR 列の長さを変更する
・ 参照タイプ列を変更して、有効範囲を追加する
・ 生成される列の生成式を変更する
・ 1 つまたは複数のチェック制約属性、あるいは参照制約属性を変更する
・ 区分化キーの追加、あるいはドロップを行う
・ 表属性(データ・キャプチャー・オプション、pctfree、ロック・サイズ、追加モード
など) を変更する
・ 表を記録されていない初期状態(NOT LOGGED INITIALLY) に設定する
    • good
    • 0
この回答へのお礼

ALTER TABLEでは「NOT NULL」の付加・削除はできませんでした。
教えていただいたとおり、tableの再作成で対処しました。

大変助かりました。どうもありがとうございました。

お礼日時:2005/06/10 22:27

こんにちは。



>>既存カラムへnot null制約を付与したいのですが、コマンドを教えてください
「not null」はオプション項目なので、列の定義情報を便宜的に変更してから付与してください。
ALTER TABLE テーブル名
ALTER COLUMN カラム名
SET DATA TYPE そのまま
NOT NULL WITH DEFAULT デフォルト値

>>既存カラムについた、not null制約を削除したいのですが、コマンドを教えてください
多分ドロップできたはず・・・。
ALTER TABLE テーブル名
ALTER COLUMN カラム名
DROP NOT NULL

今手元にないので、自信ないです・・・。
(^^ゞ
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。

No2の方が回答してくれたとおり、DB2では
「NOT NULL」の付与・削除はALTER TABLEでは
できないようです。

どうもありがとうございました。

お礼日時:2005/06/10 22:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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

Aベストアンサー

「その列」をwhere条件に記述して、is null またはis not nullで絞れますか?

どちらもできないなら、nullと空文字を混同しているのかも

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

お世話になります。

既存テーブルにフィールドを追加する方法は
わかっているのですが、その追加したフィールドに
not null制約を付けるにはどのようなコマンドを
実行する必要があるのでしょうか。

↓のコマンドには制約をつけるオプションはないですよね。。
ALTER TABLE テーブル名 ADD (カラム名 カラム定義)

よろしくお願いします。

Aベストアンサー

ALTER TABLE table_nameMODIFY (field_name NOT NULL)

でできるはずです。

QPostgreSQLのカラムに"user"という名前のカラムがある場合のデータ表示について

PostgreSQLを使い始めたのですが、わからないことがあるので知恵をおかしください。
ユーザー名を管理するテーブルを以下のように作成しました。
テーブル:table
 |No|user|from |
 |1 |Atom|tokyo|
 |2 |Boss|izu |
 |3 |Cat |chiba|
このテーブルのデータをuser部分のみ表示するに以下のSQL文を作成しました。
 SELECT user FROM table
上記のSQLを実行したのですが、userのカラム部分がcurrent_userとテーブルのカラムではなくセッションの情報を取得してきてしまいます。
試しに
 SELECT * FROM table
で実行するとテーブルのデータを取得でき、
 SELECT table.user FROM table
で実行するとsyntax errorとエラー表示されデータが結果が表示されません。
userをセッション情報としてではなく、テーブル(table)のデータとして取得したい場合はどのようにしたらいいのでしょうか?

よろしくお願いします。

PostgreSQLを使い始めたのですが、わからないことがあるので知恵をおかしください。
ユーザー名を管理するテーブルを以下のように作成しました。
テーブル:table
 |No|user|from |
 |1 |Atom|tokyo|
 |2 |Boss|izu |
 |3 |Cat |chiba|
このテーブルのデータをuser部分のみ表示するに以下のSQL文を作成しました。
 SELECT user FROM table
上記のSQLを実行したのですが、userのカラム部分がcurrent_userとテーブルのカラムではなくセッションの情報を取得してきてしまいます。
試...続きを読む

Aベストアンサー

「user」が予約語になっているからでしょう。

「select "user" from table」のように、「"」(ダブルクォーテーション)で囲んでみて下さい。

Qalter table でチェックボックスの追加

accessにて・・・
alter table でカラム追加したいのですが・・・
追加したい属性がチェックボックスなんです・・・・
いろいろやってるのですが、うまくいきません・・・
チェックボックスは追加できないのでしょうか?

Aベストアンサー

#3です。
フィールドの追加はできているようなので
あとは、この辺りを参考に。

既存テーブルのフィールドプロパティをVBから変更したい
http://www.accessclub.jp/bbs2/0087/beginter26979.html
表示コントロールをチェックボックスに
http://www.accessclub.jp/bbs/0072/beginers27212.html

QALTER TABLE文の書き方について

お世話になります。

今、以下のような列からなるテーブルがあります。

・A(主キー)
・B(主キー)
・C(主キー)
・D(主キー)
・E(NOT NULL)
・F

列A、B、C、Dが複数列の組み合わせで主キーです。

このテーブルを以下のように変更したい場合、
どのようなALTER TABLE文を書けばできますでしょうか。

※列A、B、C、Dの主キーはやめて、列A、B、C、D、G、H、Iの
 複数列によるUNIQUE制約を設定。

・A(UNIQUE&NOT NULL)← 主キーはやめる
・B(UNIQUE&NOT NULL)← 主キーはやめる
・C(UNIQUE&NOT NULL)← 主キーはやめる
・D(UNIQUE&NOT NULL)← 主キーはやめる
・E(NOT NULL)
・F
・G(UNIQUE)← 追加
・H(UNIQUE)← 追加
・I(UNIQUE)← 追加

やりたいことは、列G、H、Iを追加して、
A、B、C、D、G、H、IでUNIQUEにしたく、かつ、
追加したG、H、IはNULLを許容したいということです。

A、B、C、D、G、H、Iの複数列の組み合わせで主キーも
考えましたが、主キーにするとNULLが許容できないと
いうことで、上記のようなレイアウトを考えました。

他に上手い方法があればご教授いただけると幸いです。

ちなみに列のデータ型はすべて可変長の文字列です。

お世話になります。

今、以下のような列からなるテーブルがあります。

・A(主キー)
・B(主キー)
・C(主キー)
・D(主キー)
・E(NOT NULL)
・F

列A、B、C、Dが複数列の組み合わせで主キーです。

このテーブルを以下のように変更したい場合、
どのようなALTER TABLE文を書けばできますでしょうか。

※列A、B、C、Dの主キーはやめて、列A、B、C、D、G、H、Iの
 複数列によるUNIQUE制約を設定。

・A(UNIQUE&NOT NULL)← 主キーはやめる
・B(UNIQUE&NOT NULL)← 主キーはやめる
・C(UNIQUE&NOT NU...続きを読む

Aベストアンサー

RDBMS名とバージョンは、何ですか?

DDL(定義)は、RDBMSによる機能差、仕様差が多い部分です。


このカテゴリの人気Q&Aランキング

おすすめ情報