0

问题

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

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

假设我有新条目的所有其他数据,我将如何插入?一般:

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

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

问题

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

更新

我搜索的是自动增量。

  • 是否有标准的 SQL 方式(独立于数据库)将列声明为自动增量?我正在使用Apache DerbyGENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)建议在这里
  • 插入到包含自增列的表中是什么样子的?
  • 当可以同时访问数据库时,在插入后获取创建的自动增量值的最佳方法是什么?

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

4

2 回答 2

0

在 MySQL 中,您可以使用

ALTER TABLE table_name ADD id INT AUTO_INCREMENT;

这会自动增加 id 列,您不必在插入时给出。

于 2013-03-10T15:04:54.360 回答
0

如果您使用的是 sqlserver,则制作标识类型的列将解决类似这样的目的。

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

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

于 2013-03-10T14:53:47.707 回答