• ベストアンサー

Postgresのことで・・・

質問があります。 --test_tbl---------------------- id : integer uid : varchar(32) name : varchar(64) day :date -------------------------------- という上記のテーブルがあるとします。 このテーブルのnameフィールドを varchar(64)からvarchar(120)に変更したいのですが どのようにすればいいでしょうか? Postgresのヴァージョンは7.3.2です。 宜しくお願いいたします。

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

  • ベストアンサー
  • chikorin7
  • ベストアンサー率25% (25/100)
回答No.1

こんにちは。 たしかalter tableあたりを使うんだったと思いますが、あまりカラムの数が多くないので、一度drop tableして新たにcreate tableしてもいいかもしれませんね。 あと120よりも128の方がいいと思いますよ。 参考までに…、シーラカンス本はわかりやすいので一度お読みになってはいかがでしょうか?

参考URL:
http://www.postgresql.jp/document/pg721doc/reference/sql-altertable.html
TOKIO2003
質問者

お礼

さっそくの回答ありがとうございます。 >シーラカンス本はわかりやすいので にのってなかったんです。 データ数がおおくて常に 挿入・更新をおこなっているので なるべくDROP、CREATEは避けたいのですが・・・

その他の回答 (1)

  • chikorin7
  • ベストアンサー率25% (25/100)
回答No.2

#1です。補足です。 さきほどの参考URLに書いてあるとおもうんですが、ヴァージョンに対応してるかどうかは不明です。 がんばってくださいねー。

関連するQ&A

  • Postgresのことで・・・

    質問があります。 test_tbl----------- name varchar(64) number int4 position int4 ------------------- というテーブルがあるとします。 そこにデータを格納したファイルがあります。 データファイル(test.txt)------- '山田',2001,4 '神田',1999,3 '星野',2000,2 '東',2003,1 '鳥越',1999,13(100レコード程あり) ------------------------------ このファイルのデータをtest_tblに格納したいのですがどのようにすればいいのでしょうか? ちなみにデータファイルの形式はtxtでもcsvでも なんでもかまいません。 意味的には insert into test_tbl (name,number,position) values < test.txt とかしたいんですが・・・ 可能でしょうか? ご迷惑をおかけしますが、宜しくお願いいたします。 m(_ _)m -------------------------------

  • PostgreSqlについて

    おはようございます。 質問させてください。 テーブルのカラムにtimestamp型のフィールドがあるとします。 テーブルinsertの時に現在の時間をいれたいのですが、どのような値を入れればいいのでしょうか? test_tbl-------------- ID:INTEGER DATE:TIMESTAMP ---------------------- insert into test_tbl (ID, DATE) values (1, ****); ****の部分にnow, dateとかそんな関数はあるのでしょうか?

  • SQL文作成のお願い

    前提として下記のようなテーブルがあります。 テーブル名:test フィールド: 1)id: varchar, not null 2)name: varchar 3)date: timestamp with time zone, not null このテーブルに下記のようなレコードがあります。 '00001', 'A', '2005-01-01 00:00:00' '00001', 'B', '2005-07-01 00:00:00' '00001', 'C', '2005-11-01 00:00:00' '00002', 'X', '2005-01-20 00:00:00' '00002', 'Y', '2005-07-20 00:00:00' '00002', 'Z', '2005-11-20 00:00:00' ■今やりたいこと このテーブルからidごとにdateフィールド値が最近のレコードを取得したい。 ■やってみたこと 下記SQLを発行しました。 >select id, max(date) from test group by id order by id 結果==> 00001 2005-11-01 00:00:00 00002 2005-11-20 00:00:00 実際はnameフィールドの値も取得したいのですが、group by句を使うとフィールド指定ができませんでした。 ■だめだったSQL select id, name, max(date) from test group by id order by id どのようにSQLを書けばよろしいでしょうか?

  • PHPとPostgreSQLにおいて

    こんばんわー。質問させて下さい。 PostgreSqlでテーブルを作成しました。 ---------------------------- [test_db] id:integer name:varchar(128), number integer ---------------------------- 上記のテーブルの構成をPHPプログラム内で取得 したいのですが、ご存知の型いらっしゃいますか? ちなみにPHP4です。 とりあえず浮かんだ考えは、 一度レコードをSELECTしてそれぞれのフィールドの型と大きさを取得する方法なんですが、レコードが存在していないとできないと思います。 すみませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • すみません・・・

    初歩的なことかもしれませんが、 アドバイスお願い致します。 既存のテーブルにフィールドを2つ追加したいのですが、 どのようにすればよろしいのでしょうか? 既存テーブル:sample_tbl 既存フィールド:name, old, address 追加フィールド:job[varchar2 80], email[varchar2[20] です。 宜しくお願い致します。

  • 2つの関連するテーブルで指定した値を条件に取得したい

    mysql5.1.33を使用しています。 次のような構成で、 テーブル「tbl1s」 id int(11) テーブル「tbl2s」 id int(11) name varchar(30) テーブル「tbl1s_tbl2s」 id int(11) tbl1_id int(11) tbl1sの外部キー tbl2_id int(11) tbl2sの外部キー テーブル「tbl1s」 +------+ |  id  | +------+ |  1  | +------+ |  2  | +------+ |  3  | +------+ テーブル「tbl2s」 +------+-------+ |  id  | name | +------+-------+ |  1  | sato  | +------+-------+ |  2  | suzuki | +------+-------+ |  3  | tanaka | +------+-------+ テーブル「tbl1s_tbl2s」 +------+-------+-------+ |  id  | tbl1_id | tbl2_id | +------+-------+-------+ |  1  | 1    | 1   | +------+-------+------+ |  2  | 1    | 2   | +------+-------+------+ |  3  | 3    | 1   | +------+-------+------+ 「tbl1s」テーブルの行を「tbl2s」テーブルのnameを検索条件にして取得したいのですが どのように記述すれば良いのでしょうか? 例えば「sato」を条件にした場合は、 テーブル「tbl1s」 +------+ |  id  | +------+ |  1  | +------+ |  3  | +------+ を取得したいです。

    • ベストアンサー
    • MySQL
  • postgres に接続できない

    PHP4とpostgrs8.0を利用しています。OSはWINDOWS2000です。 $DB_SERVER="localhost"; $Port = "5432"; $DB_NAME="test"; $DB_UID="postgres"; $DB_PASS="abc"; define("DB_CONECT","host=$DB_SERVER port=$Port dbname=$DB_NAME user=$DB_UID password=\"$DB_PASS\""); という設定で pg_connect(DB_CONECT) の接続でエラーが発生します。 Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "postgres" in c:\*****.php on line 12 なぜでしょうか? pg_hba.confの設定で host all all 127.0.0.1/32 md5 を host all all 127.0.0.1/32 trust に変更すると接続できるのですが。 それは問題ないのでしょうか? またレンタルサーバーのpostgresを利用する場合、 その設定も個人で変更できるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 2つの関連するテーブルで指定した値を条件orで取得したい

    mysql5.1.33を使用しています。 次のような構成で、 テーブル「tbl1s」 id int(11) テーブル「tbl2s」 id int(11) name varchar(30) テーブル「tbl1s_tbl2s」 id int(11) tbl1_id int(11) tbl1sの外部キー tbl2_id int(11) tbl2sの外部キー テーブル「tbl1s」 +------+-------+ |  id  | club | +------+-------+ |  1  | 野球 | +------+-------+ |  2  | テニス| +------+-------+ |  3  | サッカー| +------+-------+ +------+-------+ テーブル「tbl2s」 +------+-------+ |  id  | name | +------+-------+ |  1  | sato  | +------+-------+ |  2  | suzuki | +------+-------+ |  3  | tanaka | +------+-------+ テーブル「tbl1s_tbl2s」 +------+-------+-------+ |  id  | tbl1_id | tbl2_id | +------+-------+-------+ |  1  | 1    | 1   | +------+-------+------+ |  2  | 1    | 2   | +------+-------+------+ |  3  | 3    | 1   | +------+-------+------+ というテーブル構成で、「tbl1s」テーブルの行を 「tbl1s」のclubかない場合には「tbl2s」のnameを検索条件にして取得したいのですが どのように記述すれば良いのでしょうか? 例えば「テニス」を条件にした場合は、「tbl2s」のnameにはないですが「tbl1s」のclubには合致するのがあるので テーブル「tbl1s」 +------+ |  id  | +------+ |  2  | +------+ を取得したいです。

    • ベストアンサー
    • MySQL
  • php×postgresでのストアド利用について

    postgresで作成済みの手続き(ストアド)をphpから呼び出し結果を取得したいです。 ■スキーマ CREATE SCHEMA test AUTHORIZATION postgres; ■テーブル CREATE TABLE test.tbl1 ( item1 char(1), item2 int4 ) WITHOUT OIDS; ■ストアド CREATE OR REPLACE FUNCTION test.proc1(IN in_para1 int2, OUT ot_para1 date, OUT ot_para2 date, OUT ot_para3 date) AS $BODY$declare begin select current_date + in_para1 into ot_para1; select tablename from pg_tables into ot_para2; select * from test.tbl1 into ot_para3; end;$BODY$ LANGUAGE 'plpgsql' VOLATILE; ALTER FUNCTION test.proc1(IN in_para1 int2, OUT ot_para1 date, OUT ot_para2 date, OUT ot_para3 date) OWNER TO postgres; サンプル的に下準備をしました。 この後、php側でこのストアドを呼び出すコードを教えて下さい。

    • ベストアンサー
    • PHP
  • Primary Key について

    PostgreSQLのPrimary Keyについて質問があります。 ---------------------------------- create table test_db ( id int8, name varchar(32), day date, constraint PK primary key( id, name)); ---------------------------------- 上記のようにtest_dbを作成しました。 データをinsertする際、 id:[1] name:[watanabe] day:[2003-05-29] id:[2] name:[watanabe] day:[2003-05-29] とするとデータが格納されてしまいます。 idとnameの両方が一致したデータは格納できないと 思うのですが、 id, name各々test_db内に対して一意なデータとして 扱いたいのですがどのようにすればいいでしょうか? [例] id:[1] name:[watanabe] day:[2003-05-29](格納済) (name:watanabeは存在するためエラー) id:[2] name:[watanabe] day:[2003-05-29] (id:1は存在するためエラー) id:[1] name:[simada] day:[2003-05-29] (正常格納) id:[2] name:[simada] day:[2003-05-29] --------------------------------------- わかりづらくて申し訳ありませんが、 宜しくお願いいたします。