Ich erstelle eine winform-Anwendung in c # .und benutze die sql-Datenbank.
Ich habe eine Tabelle, employee_master
, die Spalten wie Id, name, address
und phone no
hat. Id
ist auto increment und alle anderen Datentypen sind varchar
.
Ich verwende diesen Code, um den nächsten automatischen Inkrementwert zu erhalten:
%Vor%Ich werde auf einer TextBox angezeigt.
Aber wenn die letzte Zeile aus der Tabelle gelöscht wird, bekomme ich immer noch den Wert, der kürzlich in der Textbox gelöscht wurde
Wie soll ich den nächsten Autoinkrementwert erhalten?
Um den nächsten Auto-Inkrement-Wert von SQLServer zu erhalten:
Dadurch wird der aktuelle Autoinkrementwert abgerufen.
%Vor%Nächster Auto-Inkrement-Wert.
%Vor%------ & gt; Dies funktioniert auch, wenn Sie eine Zeile hinzufügen und dann löschen, da IDENT_CURRENT den letzten Identitätswert zurückgibt, der für eine bestimmte Tabelle in einer Sitzung und einem beliebigen Bereich generiert wurde.
Wenn Sie eine Zeile aus der Tabelle löschen, bleibt die nächste Zahl gleich, da sie in keiner Weise dekrementiert wird.
Wenn Sie also 100 Zeilen haben und Zeile 100 gelöscht haben, hätten Sie 99 Zeilen, aber die nächste Zahl wäre immer noch 101.
Die maximale (ID) wird Ihre maximale Anzahl in der Liste von Mitarbeiter_Master
erhaltenz.B. id = 10, 20, 100 also Max wird dir 100
bringenAber wenn Sie den Datensatz löschen, muss es nicht 100
gewesen seinDu bekommst also immer noch 100 zurück
Ein wichtiger Grund für mich, dies zu sagen, könnte das Problem sein, weil Sie in Ihrer Abfrage nicht die Reihenfolge nach ID verwenden
Wenn Sie Microsoft SQL Server verwenden. Verwenden Sie diese Anweisung, um den aktuellen Identitätswert der Tabelle abzurufen. Fügen Sie dann Ihren Startwert hinzu, den Sie beim Entwerfen der Tabelle angegeben haben, wenn Sie die nächste ID erhalten möchten.
%Vor%Nur ein Gedanke, wenn Sie die letzte automatische Nummer haben wollten, die Sie in eine bereits geöffnete Verbindung eingefügt haben, versuchen Sie es mit:
%Vor%von dieser Verbindung. Das ist der beste Weg, um zu verfolgen, was gerade bei einer bestimmten Verbindung passiert ist, und vermeidet Rennbedingungen mit anderen Verbindungen. Das Erlangen der maximalen Identität ist im Allgemeinen nicht möglich.
Tags und Links sql sql-server c# winforms sql-server-2000