72

テーブルに新しい行を挿入しているときにpostgresqlシーケンスを呼び出すにはどうすればよいですか?

私はこのようなことをしたい:

insert into biz_term(
  biz_term_id, 
  biz_term_name, 
  ) 
values(SELECT nextval(idsequence)',
'temp'
);

biz_term新しいレコードをテーブルに挿入しようとすると、シーケンスidsequenceが直接呼び出されないため、これを実行したいと思います。それを呼び出す方法は?

4

2 に答える 2

141

あなたはほとんどそれを手に入れました。そこにSELECTは必要ありません:

insert into biz_term(
  biz_term_id, 
  biz_term_name, 
) 
values(
 nextval('idsequence'),
 'temp'
);

biz_term_idを自動的に処理するserial(またはbigserial)として指定しなかった理由はありますか?

于 2012-08-08T13:01:02.333 に答える
1

少し古いトピックですが、Hibernateを使用している場合BIGINTに反対する理由の1つを指摘したいと思います。BIGSERIAL記事は次のとおりです: https ://vladmihalcea.com/postgresql-serial-column-hibernate-identity/

記事が指摘しているように、

INSERTステートメントを実行する前に識別子を生成できるため、SEQUENCEジェネレーターを使用することをお勧めします。

回答を投稿すると、コメントする資格がまだありません:/。不適切と思われる場合は、あらかじめお詫び申し上げます。

于 2021-03-21T19:50:56.233 に答える