mysql 在刚刚删除的记录处插入新记录

mysql inserts new record where record was just deleted

我在删除记录后在 mySQL 中插入时遇到问题。新插入的记录在其他记录之前插入,在先前记录被删除的位置。

所以,如果我有三个这样的记录:

SnippetNum  Snippet
1             #1
2             #2
3             #3

如果我删除记录#1,下一条记录会像这样插入

SnippetNum   Snippet
4             #4
2             #2
3             #3

这打乱了我的记录在 checkedListBox 中的显示方式

下面是在checkedListBox中显示项目的代码

       private void RefreshCheckedListNoteSnippets() {
        AnesthNoteSnippets.Refresh();
        checkedListNoteSnippet.Items.Clear();
        for (int i = 0; i < AnesthNoteSnippets.List.Length; i++) {
            string command = "SELECT Snippet FROM anesthnotesnippet WHERE SnippetNum = " + AnesthNoteSnippets.List[i].SnippetNum + " ORDER BY SnippetNum ASC";
            string snippet = DataCore.GetScalar(command);
            if (snippet != String.Empty) {
                checkedListNoteSnippet.Items.Add(snippet, false);
            }
         }
      } 

这是我插入的代码:

public static void Insert(string snippet) {
    string command = "INSERT INTO anesthnotesnippet (Snippet)" +
        " VALUES ('" + snippet + "')";
    DataCore.GetScalar(command);

}

感谢任何建议

在 SQL 中,行在表中没有保证的内在排序顺序,DBMS 可以自由地将它们放在它想要的地方。

如果您需要以特定方式对它们进行排序,这就是您在提取时所做的事情,您似乎已经在 select 语句中进行了排序。

但是,由于无论如何您一次只执行一个片段(使 order by 变得多余),看起来它会归结为以下指定的顺序:

for (int i = 0; i < AnesthNoteSnippets.List.Length; i++)

那是你需要集中注意力的地方,很可能AnesthNoteSnippets.List没有按照你想要的方式排序。

检查 AnesthNoteSnippets.Refresh() 调用以确保列表在刷新时正确排序。