建一个全局表
create table common_info(
name varchar(10),
value int)
insert into common_info values('msg_count', 0)
你的sql应该这么写(用存储过程):
create proc p_ins_alm_msg
@msg_count  int out
as
select @msg_count = value from common_info where name = 'msg_count'
update common_info set value = @msg_count+ 1 where name = 'msg_count' and value = @msg_count
if @@rowcount = 0
return -1000
insert into table1 (field0)
values(@msg_count)
return 0
go以上可以帮你搞定的.
另外, update common_info set value = @msg_count+ 1 where name = 'msg_count' and value = @msg_count
这句话可以防止多个连接同时调用该存储过程时出错. 一旦@msg_count不等于
value的值, 既说明有别的调用了该存储过程, 应返回error.

解决方案 »

  1.   


    2. update xxx set f = substring(f, 1, 1) + substring(f, 2, 1) + ...
      

  2.   

    另设一个表ID_CONTRAL,专门用以管理自动编号,只有一个字段(设为id1),一条记录(初始值可令其为1)
    在需要自动增加ID的表(设为table1,其字段trans_id为int型,需自动加1)中建立Insert触发器,触发器内容为:
    update table1 trans_id set =(select id1 from id_contral) where trans_id=0
    update id set id1=id1+1
    只要在插入时将trans_id的值赋为0
       insert into table1 trans_id,values(0)
    ,即可实现trans_id自动增加.
    只要在表ID_CONTRAL中加入更多的字段,即可用同样的方法管理其它表.