获取Oracle DB中插入行的最后一个ID

Igo*_*gor 12 java oracle jdbc

可能重复:
PLSQL JDBC:如何获取最后一行ID?

我从表中获取ID时遇到问题.我有两个表AJPES_TR和TR_LOG,并且TR_LOG表中的PK被设置为AJPES_TR表中的外键.

在TR_LOG表中,我只是编写从哪个文件数据导入,我想将该PK链接到主表.在mySQL中我做得很好getID.last(); int j = getID.getInt(TR_LOG_ID);但是现在在Oracle中这已不再适用了.

这些是我的PreparedStatements:

PreparedStatement insertData = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR(rn,sSpre,reg,eno,davcna,Ime,Priimek) VALUES (?,?,?,?,?,?,?)"
  );
PreparedStatement select_file_log = 
  con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG WHERE File_import = ?"
);
PreparedStatement getID = con.prepareStatement("SELECT * FROM T_AJPES_TR_LOG");
PreparedStatement insertFile = 
  con.prepareStatement(
    "INSERT INTO T_AJPES_TR_LOG(Date_import,File_import) VALUES (?,?)"
  );
Run Code Online (Sandbox Code Playgroud)

在mySQL中,ID被设置为自动增量.

如何从TR_LOG获取ID值并在AJPES_TR表中写入该值?

Mat*_*tus 12

如果触发器配置为使用序列中的下一个值自动设置主键字段,则可以按如下方式修改INSERT语句:

INSERT INTO table (field1, field2, field3)
  VALUES (?, ?, ?)
  RETURNING primary_key_field INTO ?
Run Code Online (Sandbox Code Playgroud)

然后,为INSERT添加参数值,在主键的末尾添加输出参数,然后执行查询.

执行查询后,获取输出参数的值.它应该包含primary_key_field的值.


Mic*_*sov 6

在Oracle中用于自动递增值的序列

下一个值是SEQUENCE_NAME.NEXTVAL,上次使用的是SEQUENCE_NAME.CURRVAL