pgAdminで列を自動インクリメントするように指定するにはどうすればよいですか?


14

PostgreSQLデータベースを管理するためにpgAdmin IIIを学び始めました。しかし、それは使いやすいアプリケーションではありませんでした。

pgAdmin IIIでテーブルを作成または作成した場合、整数型の列IDに「自動インクリメント」機能を追加するにはどうすればよいですか?

回答:


17

2つのオプション: "datatype" SERIALを使用するか、シーケンスを作成し、このシーケンスを整数のデフォルト値として使用します。

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;

1
この回答はGENERATED BY DEFAULT AS IDENTITY、Postgres> = 10で導入されたものを含むように更新できます
。– Madbreaks

15

PGAdminでこれを行いたい場合は、コマンドラインを使用するよりもはるかに簡単です。PostgreSQLでは、列に自動インクリメントを追加するには、まず自動インクリメントシーケンスを作成し、必要な列に追加する必要があります。こうしました。

1)まず、テーブルの主キーがあることを確認する必要があります。また、主キーのデータ型をbigintまたはsmallintに保持します。(私はbigintを使用しましたが、他の答えで言及されているようにシリアルと呼ばれるデータ型を見つけることができませんでした)

2)次に、sequence-> add new sequenceを右クリックしてシーケンスを追加します。テーブルにデータがない場合は、シーケンスをそのままにして、変更を加えないでください。保存するだけです。既存のデータがある場合は、以下に示すように、[定義]タブの[現在の値]に主キー列の最後または最大の値を追加します。 ここに画像の説明を入力してください

3)最後に、nextval('your_sequence_name'::regclass)以下に示すように、主キーのデフォルト値に行を追加します。

ここに画像の説明を入力してください ここでシーケンス名が正しいことを確認してください。これがすべてであり、自動インクリメントが機能するはずです。


4
「PgAdminの方が簡単」については同意しません。単に列を作成するよりも、クリックを実行する方が簡単だと思いますSERIALか?
ypercubeᵀᴹ

1
GUIに慣れている方や、コマンドラインに慣れていない方は簡単に言ってみましょう。:)
toing_toing
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.