../../image/benilogo.gifPostgreSQL について


PostgreSQL のfield 論理型について。
論理型

   

どこのデーターベースでもある論理型なのではあるが、初期値とか何も入れなければどうなるか?
実際に試してみればすぐわかる。
boolean型のFieldとtext テーブルの作成
beniya=# create table dmk1( a text,  b boolean);
CREATE
beniya=# select \d dmk1;
         Table "dmk1"
 Column |  Type   | Modifiers
--------+---------+-----------
 a      | text    |
 b      | boolean |

   a: text b : boolean のテーブルを作る。
   
   


そして INSERT 文で 実際にデーターを入れてみることにする。
beniya=# INSERT INTO dmk1 VALUES( 'ABC');
INSERT 22209 1
beniya=# select * from dmk1;
a | b
-----+---
ABC |
(1 row)

beniya=# INSERT INTO dmk1 VALUES( 'ABC','true');
INSERT 22210 1
beniya=# select * from dmk1;
a | b
-----+---
ABC |
ABC | t
(2 rows)

beniya=# INSERT INTO dmk1 VALUES( 'def','false');
INSERT 22211 1
beniya=# select * from dmk1;
a | b
-----+---
ABC |
ABC | t
def | f
(3 rows)

 単に 'ABC' だけをInsert してみる。



  boolean b には何も入っていない。



 次に 'ABC' と 'true' を入れてみる。  



   t となっている。
  



 次は 'false' の検証 


   f となっている。
  




NULL ってのもあるんだ。
なにも 入れなければ NULL になる。 そうすると 明示的に NULL は入力出来るのだろうか?
何を入れると NULL になるのか?
NULLの明示的設定
beniya=# INSERT INTO dmk1 VALUES( 'hij','null');
ERROR: Bad boolean external representation 'null'
beniya=# INSERT INTO dmk1 VALUES( 'hij','');
ERROR: Bad boolean external representation ''
beniya=# INSERT INTO dmk1 VALUES( 'hij',NULL);
INSERT 22212 1
beniya=# select * from dmk1;
a | b
-----+---
ABC |
ABC | t
def | f
hij |
(4 rows)

   NULL はどうするんだろう?
    'null' ではダメ
    '' でもダメ
   NULL で OK (単に NULL でいいのだ。)


  これで明示的にも NULL を入れられる。

    


次に、Default で True とするにはどうすればいいか?
beniya=# create table bool2( a text,b boolean default 'TRUE');
CREATE
beniya=# insert into bool2 values('1st time');
INSERT 22218 1
beniya=# insert into bool2 values('2st time','false');
INSERT 22219 1
beniya=# select * from bool2;
         a      |  b
----------+---
1st time     |  t
2st time     |  f
(2 rows)
  • default 'TRUE' とする。
  • 規定値で 't' となるようです。







戻る ・・・・




Last Update 2006/05/30  14:56 JST

(C) Y.Kondou,2004,2006 All Rights, Reserved.
その他、お気づきの点がありましたら連絡先はこちらから