Java 如果ID是标识列,如何删除或更改ID?
我对数据库有一定的问题。 我有一个Derby DB,优惠券ID列由标识符决定,它增加1 表示例:Java 如果ID是标识列,如何删除或更改ID?,java,sql,derby,Java,Sql,Derby,我对数据库有一定的问题。 我有一个Derby DB,优惠券ID列由标识符决定,它增加1 表示例: CREATE TABLE Coupon ( COUPON_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), TITLE VARCHAR(30), START_DATE DATE, END_DATE DATE, AMOUNT INTEGER, T
CREATE TABLE Coupon
(
COUPON_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
TITLE VARCHAR(30),
START_DATE DATE,
END_DATE DATE,
AMOUNT INTEGER,
TYPE VARCHAR(20),
MESSAGE VARCHAR(300),
PRICE DOUBLE,
IMAGE VARCHAR(500),
CONSTRAINT PRIME_COUPON_ID PRIMARY KEY(COUPON_ID)
);
比如说,我输入了新数据或删除了…,一切正常。删除时有一个问题。
当我想删除一些数据时,这里有一个问题。
如果我有一定数量的线,将允许1000,我打算删除。一切正常情况下都会被移除,一切正常情况下都会继续工作。但这里有一个问题,我该怎么处理这些空行呢?
如果我想在其中插入一些数据,Derby拒绝了,因为优惠券id列的id作为标识列,并且它会自动增加
我希望没有收集到空的行间隔。
对这个问题有一个决定吗
但这里有一个问题,我该怎么处理这些空行呢?如果我想在其中插入一些数据,Derby拒绝了,因为优惠券id列的id作为标识列,并且它会自动增加
我倾向于认为,您不能重用ID的原因并不是因为您的ID列是一个标识列,而是因为它被标记为总是生成的
。在任何情况下,从数据库中删除行都不会产生“空行”。之后会有未使用的ID值,但这些值实际上不会占用空间
您应该忽略不再使用的ID。自动生成的ID仅用于唯一标识行。因此,重要的是,这些价值观能够达到这一目的。ID值不应具有特殊意义,当然,您也不应关心它们之间的差异
我希望没有收集到空的行间隔。对这个问题有一个决定吗
如果您愿意更改列定义,那么您可能会允许自己重用ID,但您不应该这样做。除非执行了太多的删除操作,导致ID值不足,否则这些间隙不是一个值得关注的问题