2016-07-12 1 views
1

データベースに問題があります。 私はダービーDBは、COUPON_ID列は識別子によって決定されていて、それが1IDがIDENTITY COLUMNの場合、IDを削除または変更するにはどうすればよいですか?

表の例により増加:のは、私が新しいデータを入力するか、削除しましょう

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を許可し、私は削除するつもりです。すべて正常に削除され、すべて正常に動作し続けます。しかしここでは質問ですが、私はこれらの空白行をどうしたらいいですか? 私はそれらにいくつかのデータを挿入したい場合、特定の列としてCOUPON_ID列のIDが自動的に増加するため、Derbyは拒否します。

そして、私はその空白の間隔を収集しませんでした。 この問題には決定がありますか?

答えて

2

ここで質問しますが、これらの空白行はどうすればよいですか?私はそれらにいくつかのデータを挿入したい場合、特定の列としてCOUPON_ID列のIDが自動的に増加するため、Derbyは拒否します。

IDを再利用できない理由は、ID列がID列ではなく、GENERATED ALWAYSとマークされていると思う傾向があります。いずれにしても、DBから行を削除すると、「空行」は発生しません。後で使用されないID値がありますが、これらは実質的にスペースを消費しません。

使用されていないIDは無視してください。自動生成されたIDの目的は、行を一意に識別するのみです。したがって、その価値観がその目的に役立つことだけが重要です。特定の意味はID値に帰すべきではありません。間違いなくそれらの間のギャップに気を付けるべきではありません。

そして、私はその空白の間隔を収集しませんでした。この問題には決定がありますか?

カラム定義を変更する場合は、IDを再利用できる可能性がありますが、そうしないでください。あなたがID値を使い果たしているように多くの削除を実行していない限り、ギャップは問題になることはありません。

関連する問題