如何生成固定格式的字符串在SSMS
我对大学管理数据库与表:如何生成固定格式的字符串在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中执行此操作。
作为解决方案。
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
非常感谢:) – Rony
有一件事,如果我想RegNo作为部门的智慧,我该怎么办?就像在CSE部门注册的学生一样,他的RegNo的最后3位数字是001,然后是在CSE部门002的下一位学生。那时没有学生注册EEE部门,但当一名学生注册EEE部门时,他的最后3位数字RegNo将是001,而不是003。你是否理解这个问题? – Rony
您需要为不同的部门创建和使用不同的'SEQUENCE'对象。像'SeqStudentIDsForCSE','SeqStudentIDsForEEE'等 和用例来选择适当的序列。例如,'CASE当Department ='EEE'THEN(SeqStudentIDsForEEE的下一个值)当... END时, –
添加一些示例数据和所需的输出。 –