• ベストアンサー

phpPgAdminにおいて、serial型の追加

nino2の回答

  • ベストアンサー
  • nino2
  • ベストアンサー率88% (8/9)
回答No.1

phpPgAdmin は使ったことがないのでわかりませんが SQL文で、serial型のコラムを追加する方法です。 以下のテーブルがあった場合 create table public.test1 (name text); serial型のコラム id を追加するには 以下のSQL文を順に実行します。 1 シーケンスを作る CREATE SEQUENCE public.test1_id_seq; 2 int4型のid コラムを追加する ALTER TABLE public.test1 ADD COLUMN id int4; 3 id に not NULL制約を追加する ALTER TABLE public.test1 ALTER COLUMN id SET NOT NULL; 4 idコラムのdefault値を設定する。 ALTER TABLE public.test1 ALTER COLUMN id SET DEFAULT nextval('public.test1_id_seq'::text); 以上を、参考にすれば、設定可能かと思います。 基本的には serial型があるのではなく、 serial 型にすると このようなSQL文が実行される と私は理解しておりますが ちなみに、psql で確認すると以下のように Type は integer(int4) なります。 create table public.test1( id serial ); \d test1 Column | Type | Modifiers --------+---------+------------------------------------------------------- id | integer | not null default nextval('public.test1_id_seq1'::text)

haven3
質問者

お礼

ありがとうございました。 大変参考になりました。 型があるわけではないのですね。。。。。

関連するQ&A

  • Mysqlに項目を追加するとき順番をかえるには

    こんにちは、 今mysqlを使用しています。 例えば、tbl_EXというテーブルがあり、 そこにはid,name,flgが入っているとしたときに addという項目を追加したい場合は ALTER TABLE tbl_EX ADD add int NULL DEFAULT 0 などとすれば追加できると思うのですが、 その追加を id, name, (add), flg というように 真ん中に入れたい場合は、どうすればいいのでしょうか? 一度テーブルをdropして作り替える以外に方法がある場合、 教えてください。

    • ベストアンサー
    • MySQL
  • phpPgAdminを使ってデータの更新

    PostgreSQLのphpPgAdminを使ってデータの更新をしようと思うのですが 特定の kaiin_no を選んで その t_tiket の値を '取扱っている' に更新したいのですが 文法エラーが出ます。 文: update "store_table" set "t_tiket" = '取扱っている' where "kaiin_no" = ('100','101','103'); SQL エラー: ERROR: operator does not exist: character = record LINE 1: ...t_tiket" = '取扱っている' where "kaiin_no" = ('100... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. phpPgAdmin では、= や ( ) 、" の使い方に特徴があるようなのです。 WHERE kaiin_no IN ('100','101','103'); とすべきなのでしょうか? ご存知の方がいらっしゃればご教示くださいませ。

  • MySQLで先頭にカラムを追加

    宜しくお願いします。 MySQLで新たにカラムを追加する場合、 alter table テーブル名 add column 新カラム名 after 既存のカラム名; という形で追加すると思うのですが、これだと『after 既存のカラム名』となるので、そのカラムの次に入ってしまうと思います。なので、これだとどうしても2番目に来てしまいます。新たに1番目にカラムを追加する事は出来ないのでしょうか?

    • ベストアンサー
    • MySQL
  • PerlDBIでのserial型の使い方

    PostgreSQLの8.0.2をPerlを使い、PerlDBIとして使っています。 自動的に番号をカウントアップしながら付与してくれる列を作りたくて、テーブル作成時にserial型を指定しました。 ところが、INSERTの際にその項目になんと入力していいのかわかりません。 省略すれば勝手に入ってくれるのかと思ったら permission denied for sequence filetable_fileno_seq at dbupdate.pl 155 とエラーが出てしまいます。 その155行目には $sth = $dbh->do("insert into $table values ('$list[$count]->[0]','$list[$count]->[1]','$list[$count]->[2]','$today','$today')"); といれています。 ちなみにテーブルは text、text、real、date、date、serial というならびになっています。 serialの列を入れる前までは上のSQL文で問題なかったのですが、serial型の列を追加してからは上記のようなエラーが出るようになりました。 何が原因なのかさっぱりわかりません。 教えていただければ幸いです

    • ベストアンサー
    • Perl
  • テーブルのカラムの追加について

    初歩的なことかもしれませんが、下記質問について教えてください。 現在SQL Server2000の環境でDBを使用しております。 現在使用しているDBの既存テーブルに簡単なバッチファイルを使ってカラムを追加後(ALTER TABLE)、その追加したカラムにデフォルト値やそのテーブルにレコードを追加しようとしています(個々までバッチ処理: 今回試したのは、クエリアナライザにて試験的に行っています)。 ただ、カラムの追加までは可能ですが、デフォルト値やレコードの追加を行うと「追加したカラムが無効です」というエラーが表示されます。 恐れいりますが解決策があれば、教えてください。

  • auto_increment型

    phpPgAdmin上から、テーブル定義を行っています。 テーブルの中へ、auto_increment型の項目を追加したいと 考えております。 MySQLには、auto_increment型が存在しますが、PostgreSQLの場合 には、同じような型があるのでしょうか?もし、ない場合には、 一般的にどのような対応をしているのでしょうか?(例えば、 Insertする際にPGの中でincrementしているのでしょうか?) (1)auto_increment型の追加方法 (2)auto_increment型がない場合の、対処方法 以上の点に関して、お分かりになる方がいらっしゃいましたら、 ご教示をお願いいたします。

  • カラムの存在チェック

    あるテーブルに、あるカラム(列)が存在するかどうかを調べる方法はあるのでしょうか? ・あるテーブル(TABLE_A)に、あるカラム(COLUMN_A)が存在しない場合はALTER TABLE ~ ADD でカラム(COLUMN_A)を追加する ・COLUMN_Aがある場合は何もしない というSQL文を作成したいのですが… 宜しくお願いします。

  • 文字列を追加してUPDATEしたい

    データベースリンクを使って参照したカラムの、blob型の項目にデータを追記したいのですが Concat関数を使用したところ リモート表から選択されたLOBロケータはしようできませんと出てしまいました データベースリンクを使用して、Updateで追記することはできないのでしょうか

  • Access:リンクテーブルマネージャテーブルにフィールドを追加したい

    Access2003を使用しております 他のDBよりリンクテーブルマネージャを利用しデータを参照しております。 このテーブルにフィールドを追加したいのですが、単純にフィールドを追加することは出来ないので、新しいテーブルに追加フィールドを入力したいのですが、余分なデータを入力しないで行いたいのですがいい方法は無いでしょうか? 皆様のお知恵をお貸しください よろしくお願いいたします

  • phpPgAdminからSQL文を発行し、重複しない文字列を挿入したいのですが・・・

    下記のような nickname テーブルがあります。 nickname | id | name | | 1 |あいうえお | | 2 |hogehoge | カラム「name」はユニークな値として設定してあります。 そこで、phpPgAdminを使用し下記のようなSQLを発行するとニックネームが重複しているとエラーが発生してしまいます。 INSERT INTO nickname VALUES (3,'(2)'); INSERT INTO nickname VALUES (3,'(8)'); 「(2)」と「(8)」が同じ文字と判断されているようなのですが、なぜなのか教えて欲しいです。 また、これを回避する方法はあるのでしょうか? 他にも「@@@」と「.BW」も同じ文字として認識されてしまうようです。 SQLのバージョンはPostgreSQL 7.4.7を使用しております。 --追記-- 上記で説明している「(2)」と「(8)」ですが、○に囲まれた数字文字です。 なぜか、gooに投稿すると()半角括弧でかこまれた文字になってしまいます・・・