-2

重複の可能性:
削除後にSqlServerでAutoIncrementをリセットする

SqlServer2008データベース内のIdentityauto-increment列の値に厄介な問題があります。テーブルから行を削除する(またはすべての行を削除する)と、新しいエントリを追加すると、そのレコードがまだ存在するかどうかに関係なく、前のレコードに挿入された値から増分されます。

IDENTITY列が、EXISTSの以前のレコードが何であれ、自動インクリメントされるように、それを取得する方法を誰かが知っているかどうか疑問に思いました。

私のコードは次のようになります。

    CREATE TABLE Product
    (
            Product_Barcode INT NOT NULL PRIMARY KEY IDENTITY,
            Product_Description VARCHAR(255),
            Product_Name VARCHAR(255),
            Product_Supplier VARCHAR(255) FOREIGN KEY REFERENCES Supplier(Supplier_Name),
            Product_Size VARCHAR(255),
            Product_Weight FLOAT
    );
4

1 に答える 1

1

新しいレコードと過去のレコードがIDを共有できるため、通常はこれは望ましくありません。参照制約がある場合、これは混乱を引き起こす可能性があります。

しかし、私がそれを行う方法を知っている唯一の方法は、サブクエリを使用して挿入することです。

INSERT INTO Product (Product_Barcode, Product_Description) VALUES (SELECT MAX(Product_Barcode) + 1 FROM Product, "Any description here");
于 2012-11-27T15:13:08.210 に答える