Hier is een complete oplossing. Houd er rekening mee dat het precies hetzelfde is als het duplicaat dat ik heb gemarkeerd - Databaseschema, autoincrement - Alleen andere details.
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
Houd er rekening mee dat de primaire sleutel van de tabel nog steeds de identity
moet zijn kolom (zoals weergegeven in het script) omdat de berekende kolom niet de primaire sleutel kan zijn.