すべてのテーブル設定でPostgreSQLを使用しています。私は現在、長さ4comments
の主キーで呼び出されるcomment_id
テーブルを持っています。VARCHAR
データベースに新しいコメントを挿入するためのフォーム設定がありますが、Javaサーブレットを以前の値からコメントIDに++する方法について混乱しています。例:0001から0002。
すべてのテーブル設定でPostgreSQLを使用しています。私は現在、長さ4comments
の主キーで呼び出されるcomment_id
テーブルを持っています。VARCHAR
データベースに新しいコメントを挿入するためのフォーム設定がありますが、Javaサーブレットを以前の値からコメントIDに++する方法について混乱しています。例:0001から0002。
id列にVARCHARを使用したくない。postgresでは、シーケンスを作成してから、挿入ごとにそのシーケンスの次の値を取得できます。
基本的に、あなたは次のようなことをします
CREATE SEQUENCE mysequence START 101
次に、挿入すると、次のようなことを行います
INSERT INTO my_comment values (nextval('mysequence'), 'this is my comment');
serial
まず、疑似データ型を使用します。シーケンスオブジェクトを自動的に作成してアタッチし、シーケンスからDEFAULT
toを設定し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;
詳細はこちらの優れたマニュアルをご覧ください。