"select isnull(max(cast(cls_num as int)),1000000)+1 as newid from classes"
新增数据的时候先取最大id,然后把id加1作为新id插入,
但是如果两个用户并发操作,新增数据的时候大家都是取到相同的最大id。
添加数据的时候又添加相同的id,如何处理:如果相同id到达,先保存一条数据,然后把另一id再自动加一保存。
怎样用sql处理?如果存在相同id就把id+1
Insert Into classes (id,name ) values '"& maxid &"' ,'"& name &"'
如何让sql自动处理?
select isnull(max(cast(cls_num as int)),1000000)+1 as newid from classes with (xlock,tablock)
set @err=0
begin tran
--查询赋值操作
set @err=@err+abs(@@error)
--插入操作
set @err=@err+abs(@@error)
if @err=0
commit
else
rollback
不需要自己加锁,SQL会控制这种并发修改的。
set @err=0
begin tran
--查询赋值操作
set @err=@err+abs(@@error)
--插入操作
set @err=@err+abs(@@error)
if @err=0
commit
else
rollback这段怎样执行SQL语句啊?
比如:sqlcommand sqlComd = new sqlcommand();
try
{
sqlComd.begintrancate();事务开始...
....招待存储过程
...
SqlComd.commit();事务提交
sqlComd.endtrancate();事务结束
}
catch
{
sqlComd.rollback();
}