日期:2014-05-18 浏览次数:20959 次
BEGIN TRAN select @newid = max(id) from tb WITH(XLOCK,HOLDLOCK) set @newid = xxxxx; insert into tb (id) value (@newid) where xxxx COMMIT TRAN
------解决方案--------------------
带字母的自增列?
到是没有听说过@!
你可以创建一个数字自增列,然后创建一个计算列,将你想要的字母,与数字自增列连接运算作为你的计算式,这样,就能保证你的"字母自增列"为最大了.
------解决方案--------------------
另外建立一个最大ID管理表(maxID int),每次需要取最大ID的时候,先更新MaxID+1,再取出来
如:update 最大ID管理表 set maxID+1;select maxID;
这样就可以保证同时取ID时重复的可能
------解决方案--------------------
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<100 go select * from tb /* id alp col ----------- ---- ----------- 1 a 0 2 b 1 3 c 2 4 d 3 5 e 4 6 f 5 7 g 6 8 h 7 9 i 8 10 j 9 11 k 10 12 l 11 13 m 12 14 n 13 15 o 14 16 p 15 17 q 16 18 r 17 19 s 18 20 t 19 21 u 20 22 v 21 23 w 22 24 x 23 25 y 24 26 z 25 27 aa 26 28 ba 27 29 ca 28 30 da 29 31 ea 30 32 fa 31 33 ga 32 34 ha 33 35 ia 34 36 ja 35 37 ka 36 38 la 37 39 ma 38 40 na 39 41 oa 40 42 pa 41 43 qa 42 44 ra 43 45 sa 44 46 ta 45 47 ua 46 48 va 47 49 wa 48 50 xa 49 51 ya 50 52 zb 51 53 ab 52 54 bb 53 55 cb 54 56 db 55 57 eb 56 58 fb 57 59 gb 58 60 hb 59 61 ib 60 62 jb 61 63 kb 62 64 lb 63 65 mb 64 66 nb 65 67 ob 66 68 pb 67 69 qb 68 70 rb 69 71 sb 70 72 tb 71 73 ub 72 74 vb 73 75 wb 74 76 xb 75 77 yb 76 78 zc 77 79 ac 78 80 bc 79 81 cc 80 82 dc 81 83 ec 82 84 fc 83 85 gc 84 86 hc 85 87 ic 86 88 jc 87 89 kc 88 90 lc 89 91 mc 90 92 nc 91 93 oc 92 94 pc 93 95 qc 94 96 rc 95 97 sc 96 98 tc 97 99 uc 98 100 vc 99 (100 行受影响) */ go drop table tb