sql >> データベース >  >> RDS >> Sqlserver

ID 列の重複値

    Giogri の発言をテストしたところ、テーブルに行が含まれた後に ID 仕様 (少なくとも 2008 年、おそらく他のバージョンも) を有効にすると、DB は最大の整数値から番号付けを開始します。列の値が 100 の行が 1 つある場合、Identity を有効にすると、次の挿入は 101 になります。Identity Seed が 1 に指定されていても、予想していたものではありませんでしたが、実際に起こったことです。

    SET IDENTITY INSERT に加えて 、 reseed コマンドもあります。 DBCC CHECKIDENT ID 値を指定した値にリセットするコマンドです。

    ID 仕様の有効化が実際には列の最大の整数から始まることを考えると、おそらく誰かが SET IDENTITY_INSERT を使用した可能性があります。 または DBCC CHECKIDENT を実行しました .

    Andomar が言うように、再配列する最も簡単な方法は、このように列を削除/再作成することです

    ALTER TABLE tbl
    DROP COLUMN ident_column
    GO
    alter TABLE tbl
    ADD ident_column int IDENTITY
    

    SET IDENTITY_INSERT ドキュメント:http://msdn.microsoft.com/ en-us/library/aa259221(SQL.80).aspx
    DBCC CHECKIDENT ドキュメント:http://msdn.microsoft.com/ en-us/library/aa258817(SQL.80).aspx



    1. MySQLですべての子行を見つける方法は?

    2. mysqlregexutf-8文字

    3. SQLを使用して複数のフィールドを1つに連結します

    4. 外部キーでテーブルを更新する