Autoincrement ID java db

时间:2015-04-07 23:27:53

标签: java database netbeans derby

我有这样的问题。

我的数据库中有10名学生。 当我从ID为2的数据库学生中删除并且我想添加一个ID为2的新学生时,它将取代之前删除的学生,它获得ID 11,没有2.

我使用脚本

CREATE TABLE student (
    id_student INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), ......

我使用Java DB。

是否有任何脚本可以解决我的问题?

3 个答案:

答案 0 :(得分:3)

既然你说过" GENERATED ALWAYS",Derby 总是将选择一个新的身份价值。

如果您曾说过"由DEFAULT生成",那么如果您没有提供新的识别值,那么Derby将只选择一个新的识别值。

在这种情况下("由DEFAULT生成"),您可以指定值为2的新记录,只要没有值为2的现有记录,您的新记录就会被接受。

此处提供更多信息:http://db.apache.org/derby/docs/10.11/ref/rrefsqlj37836.html

答案 1 :(得分:1)

通常,最好通过设置标志而不是删除整个记录来从数据库中软删除记录,最好使用自动增量来增加相关的ID。 您只需计算带有标志集的记录即可获得活动的记录数。 我希望答案有所帮助。

答案 2 :(得分:1)

花了很长时间来弄明白这一点。在Netbeans中,您可以运行此脚本来添加表:

CREATE TABLE MYTABLE
(
   "ID" INT not null primary key
        GENERATED ALWAYS AS IDENTITY
        (START WITH 1, INCREMENT BY 1),
   "NAME" VARCHAR(99)
);

注意大写。如果ID和NAME不是大写,则不起作用。