cmd1.ConnectionName = gs_strActiveConn '设置数据源名称
cmd2.ConnectionName = gs_strActiveConn
cmd1.commandText = "Sel ect Count(*) From [Xtnumber] Where [StartStr] = '" & pf & "' And TableName = '" & nm & "'"
If cmd1.ExecuteScalar = 0 Then '如果编号表不存在前缀的行,那么增加一行
cmd1.commandtext = "Insert Into Xtnumber (TableName, StartStr, ID) Values('" & nm & "','" & pf & "',0)"
cmd1.ExecuteNonQuery
End If
cmd1.commandText = "Sel ect [ID] From [Xtnumber] Where [StartStr] = '" & pf & "' And TableName = '" & nm & "'"
Do
Key = cmd1.ExecuteScalar() '从后台获得顺序号
cmd2.commandText = "Up date [Xtnumber] Set [ID] = " & (Key + 1) & " Where [ID] = " & Key & " And [StartStr] = '" & pf & "' And TableName= '" & nm & "'"
If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
Exit Do '更新成功则退出循环
End If
Loop
这代码用于 网络 环境编号自动生成确保唯一
如果数据记录已有的时候,在原始基础上增加编号 没问题
但是如果没有数据写入第一行值的时候,可能存在风险,比如开始读取数据的时候是没有的,但是在写入数据的时候,如果被别人抢先写入了,有可能发生插入重复数据。 如何确保插入数据前对是否有数据进行校验,已插入就执行后面的代码,没有插入才插入值。