• ベストアンサー
  • すぐに回答を!

auto_increment型

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2912
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.1

PostgreSQLには、「SERIAL」というデータ型があり、これがMySQLのauto_incrementに相当します。 いくつかの商用RDBMSと同じように、CREATE SEQUENCEもサポートされています。 既存の表に列を追加する場合、SQLでなら 「ALTER TABLE 表名 ADD COLUMN 列名 SERIAL」 で行えます。

参考URL:
http://www.postgresql.jp/document/pg814doc/html/datatype.html#DATATYPE-SERIAL

共感・感謝の気持ちを伝えよう!

質問者からのお礼

どうもありがとうございます。 本をみても、発見できなかったので助かりました。

関連するQ&A

  • AUTO_INCREMENTの動作について

    mysqlデータベースのAUTO INCREMENT値に関する質問です。 一時的なテーブルにデータを格納し、必要な操作が終わったらほかのテーブルに移し、一時的なテーブルの中のエントリを削除する設定なんですが、AUTO_INCREMENTは30まで登りましたが、29以下のエントリは既に削除しています。そうすると、新しいエントリを挿入すると、信じられないことに、31を識別子として挿入してくれなくて、15挿入されてしまいました! データを移すときに、その番号を識別子として使いますので大問題になっています。それはAUTO_INCREMENTの正常な動作ですか??避けることはできるのでしょうか? 詳しい方がいらっしゃいましたら、ご回答をよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • AUTO_INCREMENTに0はダメ?

    「INT」でかつ「AUTO_INCREMENT」のカラムに0をINSERTしようとするとうまくいかないのですが、 「AUTO_INCREMENT」では0はダメなのでしょうか? それとも「INT」だから?

    • ベストアンサー
    • MySQL
  • auto_incrementの値の取りだし方

    またまたお世話になります。 いつも秒殺質問ばかりしているnak205です。 いまPHPとMySQLでフォームから受付を行い、auto_incrementで発行した受付番号を受付完了画面に表示させるようなものを使っています。 そこで困っているのが、MySQLにデータをINSERTしたあと、どうやって正確にインクリメントされたばかりの受付番号を得ればいいかというところです。 データをINSERTしたあと、受付番号を得るSQLを発行してる間に他の受付が入ってしまえば数字がずれてしまいますよね。INSERTと同時にauto_incrementで出来た数字の値を得る関数がPHPかMySQL側にありますか? 受付番号だけ別テーブルに置いてauto_incrementではなく、PHPで管理したほうが良いんでしょうか?

    • ベストアンサー
    • PHP
  • AUTO_INCREMENTの扱いについて

    MySQL 5.6を使用しています。 ユーザーテーブルがあるとします。 ユーザーテーブルにある「ユーザーID」はinsert時にAUTO_INCREMENTで自動採番されます。 ユーザーテーブルの別のカラムで「作成ユーザID」というカラムがあります。insertしたユーザーのユーザーIDを保持するカラムです。 すでにユーザーテーブルにいるユーザー(管理者)がinsertした場合はいいのですが、 自信で自分のユーザーを登録できる機能もあります。 その場合、まだ作成されてないユーザID(AUTO_INCREMENTで自動採番されるユーザーID)をどうやって参照したらいいでしょうか?

    • ベストアンサー
    • MySQL
  • AUTO_INCREMENT の値をINSERT前に知りたい

    PHP(PEAR)+MYSQLでWEBアプリを作成しているのですが、AUTO_INCREMENTを設定した値をデータのINSERTを行う前に取得したいのですが、どのようにすればいいのでしょうか?INSERT後であればLAST_INSERT_ID()やmysql_insert_id()で取得できるのは分かっているのですが…。ちなみに現在のテーブル型はInnoDBです。MySQLもしくはPearの命令でお分かりになる方お教えください。よろしくお願いします。

  • AUTO_INCREMENTについて教えてください

    ■質問1 PHPを使ってMySQLに接続しているのですが、 「AUTO_INCREMENT」指定しているIDの次の値を取得したいのですが、 どうすれば良いでしょうか? 用途としては、レコードを挿入する際、画像ファイルにレコードID名を付与したパスをつけたいのです。 <やりたいこと> 1.AUTO_INCREMENT指定しているIDの次の値を取得 2.画像ファイル名に付与 3.レコード挿入 この1を、どうやるか知りたいです ■質問2 「AUTO_INCREMENT」指定はどこに保存されているのでしょうか? 例えばレコードを削除した後、新たにデータ挿入する場合、 次の「AUTO_INCREMENT」値ではなく、削除した一番若い番号を利用することは可能でしょうか? ■質問3 質問2に関連しているのですが、DUMPデータを移行した際など、次の「AUTO_INCREMENT」値も新しいDBへ引き継がれるのでしょうか?

    • ベストアンサー
    • MySQL
  • 後からAUTO_INCREMENTの値を1にする方法

    MySQL=4.0.26 phpMyAdmin 2.6.4-pl4を使用しています。 AUTO_INCREMENT(int11)が自動追加されて、数値が70になったとして レコードを削除しても数値が1になりません。 プライマリーキーの関係かなと思いますが、 後からphpMyAdmin上でAUTO_INCREMENTの値を1にする方法、また、自由に数値を変更する方法を教えて頂けないでしょうか。 初期の段階でDBを構築する場合でSQLを実行する場合の AUTO_INCREMENTは解るのですが、 たとえば PRIMARY KEYを(`no`)として TYPE=MyISAM AUTO_INCREMENT=1; として、正常に利用していますが、 DB構築後、レコードが登録された後、phpMyAdmin上で レコードを削除した後またAUTO_INCREMENT=1などにする方法が 解りません。 説明べたで申し訳御座いませんが、 どうぞ宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • AUTO_INCREMENTを2つ設定する方法

    お世話になっております。 現在すでに投稿されている記事を複製する処理をphpで作成しています。 linkmetaというテーブル内のid、link_idというカラムがありidはAUTO_INCREMENTとなっています。 link_idにもAUTO_INCREMENTを設定したいのですが調べるとそれは仕様により不可能ということがわかりました。 現在link_idにもidと同じ値を自動的に挿入したいと考えております。 別の手段でlink_idにAUTO_INCREMENTもしくは同様のINSERTを行う方法はありませんでしょうか? idの数値を取得しようと考えたのですが INSERT前ではAUTO_INCREMENT後の値は取得できない事に後から気づきました。 この様に1つのテーブルに値が重複しない様にする処理は皆様はどのように行なっているのでしょうか? 良い方法は思いつかずに困っております。 どなたかご回答くださいませ。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SQLite(3.2.2)でauto_increment

    今、SQLiteを利用してつまづいています。 バージョンは3.2.2です。(Linux) MySQL、PostgreSQLの知識はあります。 プライマリーキー(id)にシリアルを作成しようと思い、http://cl.pocari.org/2006-02-12-1.html を参考にしながらテーブルを作りました。 CREATE TABLE bbs ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, name VARCHAR(255) NOT NULL, message TEXT NOT NULL, last_update TIMESTAMP NOT NULL ); このbbsテーブルに対し、 INSERT INTO bbs (name,message,last_update) VALUES ('name','message','2008-04-03 12:11:00'); というクエリを発行すると 「SQL error: bbs.id may not be NULL」 とういエラーが返ってきます。 確かに、bbsテーブルのidカラムは「NOT NULL」制約があるのでエラーが正しいとは思うのですが、参考URLのauto_incrementの作成方法には、auto_incrementにしたいカラムをPRIMARY KEYでやればできる、のような事が書いてあったので、よく分かりません。 バージョンの問題なのか、クエリに誤りがあるのか分かる方おられましたら解答お願いします。 また、auto_incrementなカラムの作成方法も一緒に教えていただけたら幸いです。 宜しくお願いします。

  • auto_incrementについて困っています。

    画面上で商品の新規登録するときに、auto_incrementを設定したidが主キーの”商品テーブル”と商品テーブルのidを外部参照して主キーとする”商品詳細テーブル”を使うのですが、商品詳細テーブルでのinsert文はどうすればよいでしょうか?商品の新規登録の時に商品詳細テーブルでは、idを自動的に設定したいのですが・・・、