Es mag seltsam erscheinen, aber T-SQL hat eine IDENTITY()
Eigenschaft und eine IDENTITY()
Funktion, die jeweils einem (ähnlichen, aber) unterschiedlichen Zweck dienen.
- Die
IDENTITY()
-Eigenschaft erstellt eine Identitätsspalte in einer Tabelle. Eine Identitätsspalte enthält eine automatisch inkrementierende Identifikationsnummer. Diese Eigenschaft wird mitCREATE TABLE
verwendet undALTER TABLE
Aussagen. - Die
IDENTITY()
Funktion wird jedoch nur in einemSELECT
verwendet Anweisung mit einemINTO
Tabellenklausel, um eine Identitätsspalte in eine neue Tabelle einzufügen.
Es gibt auch die SQL-DMO Identity
-Eigenschaft, die die Zeilenidentitätseigenschaft einer Spalte verfügbar macht, aber darauf werde ich hier nicht eingehen. Microsoft weist darauf hin, dass diese Eigenschaft in einer zukünftigen Version von SQL Server entfernt wird und dass Sie sie bei neuen Entwicklungsarbeiten nicht verwenden sollten.
IDENTITY()-Eigenschaft
Hier ist ein Beispiel für die Verwendung von IDENTITY()
Eigentum.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Dieser Code erstellt eine Tabelle mit zwei Spalten. Die erste Spalte (PetId
) ist eine Identitätsspalte (weil ich die IDENTITY()
verwende Eigentum in seiner Definition).
Nachdem ich nun eine Identitätsspalte erstellt habe, kann ich Haustiernamen in PetName
einfügen Spalte, ohne dass für jede Zeile eine ID angegeben werden muss.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Ergebnis:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
In diesem Fall beginnt die Nummerierung bei 1 und jede Zeile erhöht sich um 1. Das liegt daran, dass ich IDENTITY(1,1)
verwendet habe um anzugeben, dass der Seed-Wert 1 ist und bei jeder neuen Zeile um 1 erhöht wird.
IDENTITY()-Funktion
Wie bereits erwähnt, die IDENTITY()
Funktion wird in einem SELECT INTO
verwendet Erklärung. Hier ist ein Beispiel für die Verwendung von IDENTITY()
Funktion.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Ergebnis:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Hier habe ich eine Tabelle namens BestFriends
erstellt und füllte es aus den Pets
Tisch.
In diesem Fall habe ich die Zählung bei 101 begonnen und um 10 erhöht. Beachten Sie auch, dass die Funktion das erste Argument benötigt, um den Datentyp der Spalte anzugeben.