2017-10-05 52 views
1

我對大學管理數據庫與表:如何生成固定格式的字符串在SSMS

Department(Id, Name, Code) Student(Id, Name, Email, EnrollDate, RegNo, Department)

我要報名的學生。當他或她參加RegNo會自動生成。像這種格式--XXX。

Example : CSE-2017-001, EEE-2016-002, BBA-2014-015. 

最後3部分增加自動當一個學生註冊一個特定的部門。 如何在Sql Server Management Studio中執行此操作。

+0

添加一些示例數據和所需的輸出。 –

回答

0

作爲解決方案。

1 - 爲保留ID創建SEQUENCE。或者你可以使用表格標識。

CREATE SEQUENCE SeqStudentIDs AS INT 
MINVALUE 1 
CYCLE; 

2 - 插入後創建TRIGGER進行更新RegNo

CREATE TRIGGER TRG_Student_ForCreateRegNo ON Student AFTER INSERT 
AS 
BEGIN 
    UPDATE Student set 
     RegNo = CONCAT((SELECT TOP 1 Code FROM Department WHERE Id = inserted.Department) , '-' , DATEPART(YEAR,inserted.EnrollDate), '-', RIGHT('000' + CONVERT(VARCHAR,(NEXT VALUE FOR SeqStudentIDs)),3)) 
    FROM Student INNER JOIN inserted ON Student.Id = inserted.Id 
END 
+0

非常感謝:) – Rony

+0

有一件事,如果我想RegNo作爲部門的智慧,我該怎麼辦?就像在CSE部門註冊的學生一樣,他的RegNo的最後3位數字是001,然後是在CSE部門002的下一位學生。那時沒有學生註冊EEE部門,但當一名學生註冊EEE部門時,他的最後3位數字RegNo將是001,而不是003。你是否理解這個問題? – Rony

+0

您需要爲不同的部門創建和使用不同的'SEQUENCE'對象。像'SeqStudentIDsForCSE','SeqStudentIDsForEEE'等 和用例來選擇適當的序列。例如,'CASE當Department ='EEE'THEN(SeqStudentIDsForEEE的​​下一個值)當... END時, –

相關問題