当前位置: 首页 > 面试题库 >

插入,并获得自动增加的值

王彭薄
2023-03-14
问题内容

请考虑下表:

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是无效的,因为可能会有重复的条目。


问题答案:

通过普通的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()。



 类似资料:
  • 我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?

  • 问题内容: 我有一个PreparedStatement,例如: 如您所见,Employee表具有一个自动递增的ID。我基本上也需要使用prepareStatement自动添加它。有人可以告诉我我要去哪里哪里并纠正我吗?现在,这只是给我一个与Statement相关的错误。 问题答案: 将该列 完全 放在语句之外。它将由数据库引擎生成。您的查询应为: __ 其次,您必须先执行插入操作,然后再从结果中取

  • 问题内容: 我正在尝试获取类似mysql_insert_id()的mysql命令;它检索最后插入的行的auto_increment ID。我该怎么做才能在Java中获得它? 我的姓氏声明为INT。我不知道在rs.get中使用什么以及参数。 问题答案: 尝试使用别名

  • 我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?

  • 问题内容: 我生成一个SQLite表(在Java中): 之后,我尝试使用INSERT命令添加行: 我得到错误: 我以为行ID会自动生成,但似乎我什么都没想。 我尝试了另一种解决方案: 结果,我在“ prep.setInt(1,n);”处收到一个空指针异常。 看到故障了吗? 问题答案: 您是否尝试指出要传递的参数应该与表的哪些字段相关? 在您的情况下,可能类似于:

  • 问题内容: 一位同事让我意识到了一个非常奇怪的MySQL行为。 假设您有一个表,其中包含一个auto_increment字段和另一个设置为唯一的字段(例如,用户名字段)。尝试插入表中已有用户名的行时,插入失败,正如预期的那样。然而,几次尝试失败后插入有效的新条目时,可以看到auto_increment值增加了。 例如,当我们的上一个条目如下所示时… …并且在下一次插入时尝试使用相同的用户名值尝试五