1

すべてのテーブル設定でPostgreSQLを使用しています。私は現在、長さ4commentsの主キーで呼び出されるcomment_idテーブルを持っています。VARCHAR

データベースに新しいコメントを挿入するためのフォーム設定がありますが、Javaサーブレットを以前の値からコメントIDに++する方法について混乱しています。例:0001から0002。

4

2 に答える 2

7

id列にVARCHARを使用したくない。postgresでは、シーケンスを作成してから、挿入ごとにそのシーケンスの次の値を取得できます。

ここにドキュメントがあります

基本的に、あなたは次のようなことをします

CREATE SEQUENCE mysequence START 101

次に、挿入すると、次のようなことを行います

INSERT INTO my_comment values (nextval('mysequence'), 'this is my comment');
于 2012-11-29T22:22:00.967 に答える
6

serialまず、疑似データ型を使用します。シーケンスオブジェクトを自動的に作成してアタッチし、シーケンスからDEFAULTtoを設定しnextval()ます。それはあなたが必要とするすべてをします。列の有効なタイプはですinteger。もありbigserialます。マニュアルへのリンクをたどってください。

CREATE TABLE comments (
    comment_id serial PRIMARY KEY
   ,comment text NOT NULL
   );

コマンドの列は無視してかまいません。INSERT

INSERT INTO my_comment (comment)
VALUES ('My comment here');

comment_id自動的に入力されます。
ただし、の列リストは常にINSERT提供する必要があります。後でテーブルのレイアウトを変更すると、コードが破損する可能性があります。アドホックコマンドの場合、またはテーブル構造が保証されている場合(同じトランザクションでテーブルを作成した場合など)は、列リストをスキップしてもかまいません。それ以外に、列リストを提供してください!

comment_idサーバーへの別のラウンドトリップなしで、結果を返す必要がある場合:

INSERT INTO my_comment (comment)
VALUES ('My comment here');
RETURNING comment_id;

詳細はこちらの優れたマニュアルをご覧ください。

于 2012-11-29T22:41:32.310 に答える