Có vẻ lạ, nhưng T-SQL có IDENTITY()
thuộc tính và một IDENTITY()
mỗi chức năng phục vụ một mục đích (tương tự, nhưng) khác nhau.
-
IDENTITY()
thuộc tính tạo một cột nhận dạng trong một bảng. Cột nhận dạng chứa số nhận dạng tự động tăng dần. Thuộc tính này được sử dụng vớiCREATE TABLE
vàALTER TABLE
các câu lệnh. -
IDENTITY()
tuy nhiên, hàm chỉ được sử dụng trongSELECT
câu lệnh vớiINTO
mệnh đề bảng để chèn một cột nhận dạng vào một bảng mới.
Ngoài ra còn có SQL-DMO Identity
thuộc tính hiển thị thuộc tính nhận dạng hàng của một cột, nhưng tôi sẽ không trình bày điều đó ở đây. Microsoft khuyên rằng thuộc tính này sẽ bị xóa trong phiên bản SQL Server trong tương lai và bạn nên tránh sử dụng nó trong công việc phát triển mới.
Thuộc tính IDENTITY ()
Đây là một ví dụ về việc sử dụng IDENTITY()
tài sản.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Mã này tạo một bảng có hai cột. Cột đầu tiên (PetId
) là cột nhận dạng (vì tôi sử dụng IDENTITY()
tài sản theo định nghĩa của nó).
Bây giờ tôi đã tạo cột nhận dạng, tôi có thể chèn tên vật nuôi vào PetName
mà không cần bao gồm ID cho mỗi hàng.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Kết quả:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
Trong trường hợp này, việc đánh số bắt đầu từ 1 và mỗi hàng tăng lên 1. Điều này là do tôi đã sử dụng IDENTITY(1,1)
để chỉ định rằng giá trị gốc là 1 và nó được tăng thêm 1 trên mỗi hàng mới.
IDENTITY ()
Như đã đề cập, IDENTITY()
hàm được sử dụng trong SELECT INTO
tuyên bố. Đây là một ví dụ về việc sử dụng IDENTITY()
chức năng.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Kết quả:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Ở đây, tôi đã tạo một bảng có tên là BestFriends
và điền nó từ Pets
bàn.
Trong trường hợp này, tôi bắt đầu đếm ở 101 và tăng lên 10. Cũng lưu ý rằng hàm yêu cầu đối số đầu tiên để chỉ định kiểu dữ liệu của cột.