我有这样的问题。
我的数据库中有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。
是否有任何脚本可以解决我的问题?
答案 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不是大写,则不起作用。