[pgsql-jp: 27429] Re: create table後に、[NOT NULL] を設定

sugita @ sra.co.jp sugita @ sra.co.jp
2002年 9月 16日 (月) 15:44:14 JST


  杉田です。

From: toda toshifumi <toda @ i-power.tv>
Date: Mon, 16 Sep 2002 14:48:33 +0900

;;; 【状況】
;;; [create table as ...] にて、旧テーブルから、新テーブルへ
;;; データ移行を行っております。

  AS でなく、テーブルを作っておいて、INSERT INTO .. SELECT では、まずいのです
か?

;;; そこで、制約条件が新テーブルに移行できないことは
;;; かまわないのですが、新テーブルのあるカラム(empID)にPrimarKey
;;; を割り当てるために、NOT NULL条件を設定したいのですが。
;;; 「alter table」などで、いろいろ試したのですが、
;;; 制約を作成することができませんでした。
;;;
;;; 【質問】
;;; テーブルをcreateした後に、あるカラムに[NOT NULL]制約を
;;; 設定する方法はあるのでしょうか?

  ALTER でという場合には、現在βリリースの 7.3 では、次のようにできます。

    =# create table class1 (id int4);
    CREATE TABLE
    =#  alter table class1 alter id set not null;
    ALTER TABLE
    =#  alter table class1 add primary key (id);
    NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index
    'class1_pkey' for table 'class1'
    ALTER TABLE
    =# \d class1
	Table "public.class1"
     Column |  Type   | Modifiers 
    --------+---------+-----------
     id     | integer | not null
    Indexes: class1_pkey primary key btree (id)

    =# 


Kenji Sugita                                      



pgsql-jp メーリングリストの案内