2016-10-18 2 views
0

私はテーブルInspectorsを持っている:Id列の内容をリセットするには?私のSQL Server 2008のデータベースで

| Id | Inspector | 
| 11 | inspector1 | 
| 12 | inspector3 | 
| 13 | inspector4 | 
| 14 | inspector5 | 

Id列が主キーと自動インクリメントとして定義されています。

私はId列をリセットするために、そのようなのId列のコンテンツを作成する必要があります。

| Id | Inspector | 
| 1 | inspector1 | 
| 2 | inspector3 | 
| 3 | inspector4 | 
| 4 | inspector5 | 

私は希望Idコンテンツに上記Id列の内容を変更することができますどのように任意のアイデアを?

+1

を作成するには、電子フィールド実行

  • そのテーブル内のスクリプトは、この表に 'Id'の値に依存しているすべての外部キー制約はありますか? – Igor

  • +0

    @Igorはいテー​​ブルを気にする外来キーの関係があります – Michael

    +6

    これはあなた自身にはしないでください。あなたはこの運動から何が得られるでしょうか?アイデンティティ値は単なる数字であり、実際の意味はありません。ギャップについてはどうしますか(それは完全に自然です)。 –

    答えて

    2

    非常に強くお勧めできません。このようなことをしようとすると、間違ってしまえば、データベースの完全性を徹底的に悪化させる可能性があります。もしこれを定期的にやろうと思えば、それは維持できなくなるでしょう。データベース

  • 置きシングルユーザーモードでデータベースを

    • バックアップ:あなたには、いくつかのテストの目的のために非生産データベースのために、この1回を行う必要がある場合

      次のことを試みることができます

    • に新しいフィールドを追加します。IDnew
    • と呼ばれるIDプロパティに新しいフィールドを追加フィールド
    • からIDプロパティを削除します関連するテーブルもIDnew呼ば
    • 更新
    • ドロップFK制約子テーブルに値を
    • スクリプトFK制約を取得するために 元IDに参加使用して、すべての関連テーブルでIDnew列
    • ドロップメインテーブルのID列と、それは親テーブル
    • にIDに子テーブル
    • 名前の変更IDNew中に を関連していたコラム 番目の元の名前に子表のIDnew列の名前を変更しますFKS
  • 関連する問題