@Phil: Meinst du nicht, dass deine Tabelle zwei (2) Spalten hat, die automatisch inkrementierende PK-Spalte und eine AdminName-Spalte? Wenn der AdminName nur eine Spalte enthält, ist der AdminName die PK, und Sie können eine Zeichenfolge natürlich nicht automatisch inkrementieren. Erwarten die Geschäftsregeln, dass Sie einen vollqualifizierten Windows-Benutzernamen zum Primärschlüssel machen? Das wäre sinnvoll und sinnvoll, da Sie dann keinen alternativen eindeutigen Index für die Spalte AdminName benötigen würden.
Wenn Ihre Tabelle jedoch zwei Spalten enthält, nicht eine:
In SQLServer ist die automatische Inkrementierung Teil der Tabellen- / Spaltendefinition. Sie definieren die Spalte als Ganzzahl und machen sie dann auch zu einer Identitätsspalte, wobei Sie das Inkrement angeben, normalerweise 1, aber es kann 2 oder 5 oder 10 oder was auch immer sein. Um eine Zeile einzufügen, fügen Sie einfach die anderen Spaltenwerte ein und tun nichts mit der PK-Spalte:
insert into T
(foo) -- column(s) list
values('bar') -- values list
Ihr gespeicherter Prozess, der die Einfügung ausführt, kann SCOPE_IDENTITY zu einem RETURN-Wert machen, oder SCOPE_IDENTITY kann als OUT-Parameter an den Client zurückgegeben werden.
PS SCOPE_IDENTITY () gibt den zuletzt generierten automatisch inkrementierten Identitätswert im aktuellen Bereich zurück. Es wird nicht der nächste Identitätswert generiert.
BEARBEITEN:
Vermutlich enthält Ihre Administratortabelle eine Reihe von Administratoren. Wenn jedoch keine anderen Spalten als die ganzzahlige Primärschlüsselspalte vorhanden sind, können die Administratoren nicht identifiziert werden. Sie können sie nur voneinander unterscheiden. Das bringt dich überhaupt nicht weit. Aber wenn Ihre Administrator-Tabelle eine der folgenden Strukturen hatte:
ID INTEGER PRIMARY KEY AUTOINCREMENT
windowsusername varchar(50) (unique index)
ODER
windowsusername varchar(50) primary key
Sie könnten auf die Administratortabelle aus anderen Tabellen verweisen, und die Fremdschlüssel wären BEDEUTEND. Und genau das fehlt einer Tabelle, die aus einer einzelnen Ganzzahlspalte besteht - Bedeutung.
Mit zwei Spalten können Sie dann eine gespeicherte Prozedur ausführen lassen:
insert into Administrators
(windowsusername)
values('mydomain\someusername');
return SCOPE_IDENTITY();
und Ihr Client-Programm würde als Rückgabewert die automatisch inkrementierte ID zurückerhalten, die automatisch generiert und der neu eingefügten Zeile zugewiesen wurde. Dieser Ansatz ist die übliche Praxis, und ich würde sogar sagen, dass er als "Best Practice" gilt.
PS Sie erwähnen, dass Sie nicht wussten, wie man "einen Wert einfügt", wenn Sie "nichts einzufügen hatten". Da gibt es einen Widerspruch. Wenn Sie nichts einzufügen haben, warum einfügen? Warum würden Sie beispielsweise einen neuen KUNDENDATEN erstellen, wenn Sie absolut nichts über den Kunden wissen? Nicht ihr Name, ihre Stadt, ihre Telefonnummer, nichts?