web-dev-qa-db-ja.com

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

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

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

15
Jonas

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 *;
17
Frank Heikens

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

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

2)次に、シーケンスを右クリックしてシーケンスを追加します->新しいシーケンスを追加します。テーブルにデータがない場合は、シーケンスをそのままにして、変更を加えないでください。保存してください。既存のデータがある場合は、以下に示すように、主キー列の最後または最も高い値を[定義]タブの[現在の値]に追加します。 enter image description here

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

enter image description here シーケンス名が正しいことを確認してください。これですべてで、自動インクリメントが機能するはずです。

15
toing_toing