यहाँ एक पूर्ण समाधान है। कृपया ध्यान दें कि यह मेरे द्वारा चिह्नित किए गए डुप्लिकेट जैसा ही है - डेटाबेस स्कीम, ऑटोइनक्रिकमेंट - बस अलग विवरण।
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
कृपया ध्यान दें कि तालिका की प्राथमिक कुंजी अभी भी identity
होनी चाहिए कॉलम (जैसा कि स्क्रिप्ट में दिखाया गया है) क्योंकि परिकलित कॉलम प्राथमिक कुंजी नहीं हो सकता है।