Ecco una soluzione completa. Tieni presente che è esattamente lo stesso del duplicato che ho contrassegnato - Schema di database, autoincrement - Solo dettagli diversi.
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
Tieni presente che la chiave primaria della tabella deve essere ancora identity
colonna (come mostrato nello script) poiché la colonna calcolata non può essere la chiave primaria.