要手工生成一个 带字母的自增列
select @newid = max(id) from tb
set @newid = xxxxx;
insert into tb (id) value (@newid) where xxxx
怎么在这个过程中 [email protected] 一定是最大的
我记得sql 中 有 锁 的概念
不知道怎么用法
------解决方案--------------------
- SQL code
BEGIN TRAN select @newid = max(id) from tb WITH(XLOCK,HOLDLOCK) set @newid = xxxxx; insert into tb (id) value (@newid) where xxxxCOMMIT TRAN
------解决方案--------------------
带字母的自增列?
到是没有听说过@!
你可以创建一个数字自增列,然后创建一个计算列,将你想要的字母,与数字自增列连接运算作为你的计算式,这样,就能保证你的"字母自增列"为最大了.
------解决方案--------------------
另外建立一个最大ID管理表(maxID int),每次需要取最大ID的时候,先更新MaxID+1,再取出来
如:update 最大ID管理表 set maxID+1;select maxID;
这样就可以保证同时取ID时重复的可能
------解决方案--------------------
------解决方案--------------------
- SQL code
create table tb(id int identity(1,1),alp as char((id-1)%26+97)+(case when id>26 then char((id/26-1)%26+97) else '' end),col int) --alp列位数不够再加insert into tb(col) select number from master..spt_values where type='p' and number<100goselect * from tb/*id alp col----------- ---- -----------1 a 02 b 13 c 24 d 35 e 46 f 57 g 68 h 79 i 810 j 911 k 1012 l 1113 m 1214 n 1315 o 1416 p 1517 q 1618 r 1719 s 1820 t 1921 u 2022 v 2123 w 2224 x 2325 y 2426 z 2527 aa 2628 ba 2729 ca 2830 da 2931 ea 3032 fa 3133 ga 3234 ha 3335 ia 3436 ja 3537 ka 3638 la 3739 ma 3840 na 3941 oa 4042 pa 4143 qa 4244 ra 4345 sa 4446 ta 4547 ua 4648 va 4749 wa 4850 xa 4951 ya 5052 zb 5153 ab 5254 bb 5355 cb 5456 db 5557 eb 5658 fb 5759 gb 5860 hb 5961 ib 6062 jb 6163 kb 6264 lb 6365 mb 6466 nb 6567 ob 6668 pb 6769 qb 6870 rb 6971 sb 7072 tb 7173 ub 7274 vb 7375 wb 7476 xb 7577 yb 7678 zc 7779 ac 7880 bc 7981 cc 8082 dc 8183 ec 8284 fc 8385 gc 8486 hc 8587 ic 8688 jc 8789 kc 8890 lc 8991 mc 9092 nc 9193 oc 9294 pc 9395 qc 9496 rc 9597 sc 9698 tc 9799 uc 98100 vc 99(100 行受影响)*/godrop table tb