Đây là một giải pháp hoàn chỉnh. Xin lưu ý rằng nó hoàn toàn giống với bản sao tôi đã đánh dấu - Lược đồ cơ sở dữ liệu, tự động gia tăng - Chỉ là các chi tiết khác nhau.
CREATE TABLE [dbo].[STUDENT]
(
[ID] int identity(1,1) PRIMARY KEY,
[Stud_LName] [varchar](100) NOT NULL,
[Stud_FName] [varchar](100) NOT NULL,
[Stud_MName] [varchar](100) NOT NULL
)
GO
CREATE FUNCTION dbo.GetSudentId
(
@id int
)
RETURNS varchar(10)
AS
BEGIN
RETURN Concat(Year(Getdate()), '-', RIGHT(Concat('0000', (SELECT COUNT(*) FROM STUDENT WHERE id < @Id)), 6))
END
GO
ALTER TABLE [dbo].[STUDENT]
ADD Stud_ID AS (dbo.GetSudentId(Id))
GO
Xin lưu ý rằng khóa chính của bảng vẫn phải là identity
(như được hiển thị trong tập lệnh) vì cột được tính không thể là khóa chính.