-2

このIDの問題を解決する方法を知っている人はいますか?

例えば ​​:

ID | Message
1  |  Hi
2  |  Philemon
3  |  Car              <-- Delete this row
4  |  Tay
5  |  Bye

3 行目を削除すると、その行以降の ID が自動更新され、ID が入力されます。

ID  | Message
1   | Hi
2   | Philemon
3   | Tay
4   | Bye

詳しくは :

private void btnDel_Click(object sender, EventArgs e)
    {
        using (testEntities Setupctx = new testEntities())
        {
            int ID = Int32.Parse(lblID.Text);
            var DeleteSh = (from delsh in Setupctx.shifthours
                            where delsh.idShiftHours == ID
                            select delsh).Single();
            Setupctx.DeleteObject(DeleteSh);
            Setupctx.SaveChanges();
            txtStart.Text = "";
            txtStop.Text = "";
            this.Edit_Shift_Hours_Load(null, EventArgs.Empty);
            MessageBox.Show("Selected Shift Timing Has Been Deleted.");
        }
    }

行を削除するコードです。削除した後、削除された ID を次のデータで埋めるために、ID を自動更新する必要があります。現在、情報を削除することはできますが、ID は同じままです。

4

2 に答える 2

6

これを行わないでください。誰かがあなたのページhttp://mysite.com/article.aspx?ArticleID=1234にリンクし、その前にあるインデックスを削除すると、突然 1234 がまったく別のものを参照するとします。更新する必要があるすべての外部キー制約は言うまでもありません (データベースが適切に正規化されていることを意味します)。

それは並行性とユーザビリティの悪夢です。

于 2012-07-12T02:12:16.687 に答える
0

これを行う唯一の方法は、最初に問題のアイテムを削除してから、テーブル内のアイテムを選択し、テーブルをドロップしてから、後でテーブルデータを再度挿入して再度作成することだと思います。

これは、データベースに外部キーがリンクされていない場合にのみ可能です。それ以外の場合は参照エラーが発生します。

これ以外.. やらないでください。

連続した ID を持つ列が本当に必要な場合は、他のテーブルとの関係を壊さずに更新できる主キー列ではない別の列を追加します。ただし、他のテーブルから参照することはできません

于 2012-07-12T13:38:44.513 に答える