使用新id创建新表条目

时间:2013-03-10 14:47:07

标签: java sql mybatis

问题

我有一个表格,其中包含一个整数类型ID列的数据(也是主键)。

当向表中添加新数据条目时,它应该获得一个新ID,而插入该对象的应用程序不知道该ID,但它应由数据库提供。例如,ID应分配为0,1,2,...

假设我有新条目的所有其他数据,我该怎么做插入?通常:

insert into T values(123, 'data');

但现在我不知道该放什么而不是123 - 您是否会在数据库中创建某种全局变量NEXTID,每次在插入T之前提供ID并查询/更新此值?

问题

  1. 如何处理这类问题?最好是并发保存的解决方案。
  2. 如何使用Java / myBatis实现这一目标?我有一个与表结构相对应的Java类,应该将新对象添加到数据库中,自动获取新ID。
  3. 更新

    我搜索的是自动增量。

    • 是否有标准的SQL方式(数据库无关)将列声明为自动增量?我正在使用 Apache Derby 并建议GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)使用{{1}}。
    • 对包含自动增量列的表的插入如何?
    • 在可以同时访问数据库的情况下,在插入后获取创建的自动增量值的最佳方法是什么?

    我会接受一个答案,其中包括声明和插入的说明和SQL说明:)

2 个答案:

答案 0 :(得分:0)

如果您正在使用sqlserver,那么创建标识类型列将解决此类目的 。

  ALTER TABLE [dbo].[T] ADD [Column1] INT identity (1, 1)

对于像oracle这样的其他人,您可以使用简单的数据库序列。

答案 1 :(得分:0)

在MySQL中你可以使用

ALTER TABLE table_name ADD id INT AUTO_INCREMENT;

这会自动增加id列,您无需插入。