3

次の表を検討してください。

create table language (
    id integer generated always as identity (START WITH 1, INCREMENT BY 1),
    name long varchar,
    constraint language_pk primary key (id)
);

この方法でエントリを挿入します。

insert into language(name) values ('value');

どのような価値idが生み出されたかをどのように知ることができますか? name重複するエントリが存在する可能性があるため、フィールドを使用して SELECT を実行するだけでは無効です。

4

3 に答える 3

6

プレーン SQL を介して:

 insert into language(name) values ('value');
 SELECT IDENTITY_VAL_LOCAL();

詳細については、マニュアルを参照してください: http://db.apache.org/derby/docs/10.7/ref/rrefidentityvallocal.html

これを Java クラスから (JDBC を介して) 実行する場合、適切なexecuteUpdate()メソッドでそれらを「要求」した後にgetGeneratedKeys()を使用できます。

于 2011-07-22T14:47:37.920 に答える
1

JDBC メソッドを使用する

st.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet keys = st.getGeneratedKeys();

Derby マニュアルに記載されているとおりです。

Javadocs : DatabaseMetaData#supportsGetGeneratedKeys() およびStatement#getGeneratedKeys()も参照してください。

于 2014-08-09T01:41:52.963 に答える