- - PR -
insertのsqlについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-02 09:12
いつも拝見させていただいております。
oracle10gを使っていますが、基本的なことだと思うのですが、insert文の書き方が わかりません。 insert into 表名(aa,bb,cc) values(1,'abc','def'); と書けば問題ないのですが、 bbに何も入れたくない(nullでもない) 場合の書き方がわかりません。 必要桁数分のスペースを入れて問題ないのでしょうか? その他書き方がありましたらお願いいたします。 また、not null制約はかけていません。 かけた場合は、nullと入れればnullが入るのはわかるのですが・・・ | ||||
|
投稿日時: 2006-10-02 09:29
insert into 表名(aa,cc) values(1,'def');
でいいんじゃないですか。 こうするとbbには規定値が入ります。
また、not null制約はかけています。 かけていない場合は、nullと入れればnullが入るのはわかるのですが・・・ の間違いでしょうか。 [ メッセージ編集済み 編集者: 一郎 編集日時 2006-10-02 09:29 ] | ||||
|
投稿日時: 2006-10-02 12:27
一郎さんありがとうございます。
nullは間違えていました。 また、not null制約をかけている場合も、 教えていただいた書き方で、規定値が入りますか? defaultと入れた場合、defaultを設定していなければ 使えないのでしょうか? | ||||
|
投稿日時: 2006-10-02 12:49
#oracleは詳しくないのですが(汗
「default」を書くのはinsertのsqlではない・・というのは理解されてますよね?defaultだけ書いて値を書かないとcreate tableがエラーになると思いますけど・・。 not null制約を書いていればdefaultはnullではないハズなので、一郎さんの記述で問題ありません。そもそも「規定値が入る」というのは規定値を定義しているという前提ですので。 [ メッセージ編集済み 編集者: shimix 編集日時 2006-10-02 13:01 ] | ||||
|
投稿日時: 2006-10-02 13:15
「何も入れたくない」というのが「SQL文に明示したくない」いう意味であれば、一郎さんの返答の通り省略可能です。 一方で「(値を)何も入れたくない」いう意味だとすると、それは出来ません。 値を省略し かつdefault指定も無い場合は、そこにはNULLが入ります。(not null制約を書いていない場合のこと。書いてあればエラーになります) もしも「意図的にNULLを入れたくない」のであれば、何か代わりの値を(例えばスペースなど)を指定する必要があります。 | ||||
|
投稿日時: 2006-10-02 22:05
insert into 表名(aa,bb,cc) values(1,default,'def');
でどうよ |
1