to: tyrone98(林林)谢谢你的答复。从业务角度讲,如果出现会计传票号被取消或删除的情况,怎么处理呢?后面的单子自动填充被删除的吗?在csdn见过几次类似的问题,一直不明白为什么有这方面的要求。
用rownum让前台看起来是连续的算了
用语句查询下一个可用的空号不就行了,不要用序列,序列用在事务里当事务回滚里也会跳号的。 如你的表(XX)里有字段SNo为你要的主键(长度为8)要让每次生成的记录号连续可以用下面的语句。试试SELECT SUBSTR(MIN(A.SNo)+100000001,2) SNo FROM (SELECT '00000000' SNo FROM DUAL Union All SELECT SNo FROM XX) A WHERE NOT EXISTS( SELECT 'X' FROM XX WHERE SNo=substr(A.SNo+100000001,2))
删除前取出字段的序号,如8,然后再删除
update table set 字段一 = 字段一 -1 where 字段一 > 8
如你的表(XX)里有字段SNo为你要的主键(长度为8)要让每次生成的记录号连续可以用下面的语句。试试SELECT SUBSTR(MIN(A.SNo)+100000001,2) SNo FROM (SELECT '00000000' SNo FROM DUAL
Union All SELECT SNo FROM XX) A WHERE NOT EXISTS( SELECT 'X' FROM XX WHERE SNo=substr(A.SNo+100000001,2))