我想有一个学生id的最后两个数字的年份和一个字符串-001示例13-001和读取表中的最后一个值示例13-002是表中的最后一个值,它如何成为13-003当表单加载。我在表13-001上有一个值,我已经尝试过这个代码,但它给了我14而不是13-002
Dim dr As SqlDataReader
Dim Cmd As New SqlCommand
con.Open()
With Cmd
.Connection = con
.CommandText = "SELECT * FROM tbl_student ORDER BY Student_no DESC"
End With
dr = Cmd.ExecuteReader
If dr.Read Then
lblstudno.Text = Val(dr.Item(0)) + 1
End If
con.Close()谢谢,希望你能理解
发布于 2013-03-31 12:25:26
INSERT INTO
students
( student_id ) VALUES
(
CAST( ( YEAR( GETDATE() ) % 100 ) + 1 AS varchar(2) ) + '-' +
CAST(
SELECT TOP 1
CAST( RIGHT( student_id, 3 ) AS int ) + 1
FROM
students
ORDER BY
student_id DESC
AS varchar(3) )
)请注意,如果达到999名学生,则此操作将失败。除非您在表上执行某种类型的锁,否则还存在潜在的竞争条件(请参见事务隔离)。
我的帖子还说明了为什么IDENTITY键通常是一个好主意,而不是滚动你自己的(假设你想使用这个系统作为你的主键)。
https://stackoverflow.com/questions/15726273
复制相似问题