日期:2014-05-18 浏览次数:21082 次
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