问题描述
向表中加入数据,主键位ID,自动增长。有一个字段:积分,想每次插入的数据时,积分都是对应的主键大10.该这么写呢,存储过程,SQL语句都可以。
解决方案
解决方案二:
存储过程添加数据后,updatetableset积分=(SELECTMAX(ID)FROMTABLE)+10WHEREid=@IDENTITY
解决方案三:
DECLARE@TMPINTSELECT@TMP=MAX(ID)FROMTABLEINSERTINTOTABLEVALUES(XX,.....,@TMP)
解决方案四:
DECLARE@TMPINTSELECT@TMP=MAX(ID)FROMTABLEINSERTINTOTABLEVALUES(XX,.....,@TMP+10)
解决方案五:
1楼正解
解决方案六:
存储过程添加数据后,最好用事务控制updatetableset积分=id+10WHEREid=@IDENTITY
解决方案七:
declare@id1intifexists(selectmax(id)fromt1)beginselect@id1=max(id)+11fromt1insertintot1(column2)values(@id1)end其中id是主键,column2是积分列。你也可以用插入触发器。也很简单。
解决方案八:
一楼的思路是对的,不过他好像看错题了,应该是updatetableset积分=id+10WHEREid=@IDENTITY二楼的方法有问题,在多人争用时,有可能取到脏数据。同意五楼的,最好用事务处理。
时间: 2024-08-19 14:30:08