因本人对数据库不甚精通  所以请高手帮忙   回答后另开贴给分
问题如下
数据库表字段包括 A1 A2 A3 A4 A5 前台每分钟会储存数据过来 其中A1是编号 但和数据库里原有数据的编号不匹配 所以我想在数据储存过来的时候 把编号自动改成和原来匹配的 在原有数据的编号基础上每新增一条 编号自动加1   
比如数据库里原有数据的编号是 225 226 最后一条是226
但前台现在传来的是A1的数据是 3302200 我要在3302200 这条存进去的时候自动把编号改成 227 然后新数据依次是 228 229 这样存储 
存储过程该如何写  如何触发  请高手帮忙

解决方案 »

  1.   

    从你的要求来看,不用存储过程也可以实现的呀。直接在插入数据的时候从数据库表中选择值然后加1就可以了呀。 INSERT INTO 表 ()
       Values( select MAX(A1)+1 AS Num FROM 数据库表 ,)
      

  2.   


    --设置为自增的吧,后台不要往A1插入数据就可以了
    alter table t drop column A1;  
    alter table t add A1 int identity(1,1) not null;  
      

  3.   

    create trigger tri_update   
    on student   
    for update   
    as   
    if 
    update(A1)   
    begin   
    select MAX(A1)+1 AS ID FROM tab 
    rollback tran  
    end  
    go
      

  4.   

    错了create trigger tri_update   
    on tab   
    for update   
    as   
    if 
    update(A1)   
    begin   
    select MAX(A1)+1 AS ID FROM tab 
    rollback tran  
    end  
    go
      

  5.   

    create trigger tri_update    这句是用insert还是用update啊
    还有 这个是新建一个存储过程就可以了吗
      

  6.   

    create trigger tri_update   这句是用insert 还是用update啊
    直接新建一个储存过程 写这段代码就可以了吗
      

  7.   

    IF OBJECT_ID('tb') IS NOT NULL
    DROP TABLE tb
    GOcreate table tb
    (
      A1 varchar(10),
      A2 varchar(10),
      A3 varchar(10),
      A4 varchar(10),
      A5 varchar(10)
    )GoIF OBJECT_ID('MaxKey') IS NOT NULL
    DROP TABLE MaxKeyGO
    --自增主键管理表
    create table MaxKey
    (
       value int
    )insert into MaxKey select 226GoIF OBJECT_ID('[proc_insert]') IS NOT NULL
    DROP proc [proc_insert]GOCreate  proc [dbo].[proc_insert] (@A1 varchar(10),@A2 varchar(10),@A3 varchar(10),@A4 varchar(10),@A5 varchar(10))as
    begin      declare @sql varchar(8000)
          declare @value int
          update MaxKey set  value=value+1   --先更新再取出,防止多用户同时访问,造成主键重复
          select @value=value from MaxKey
          insert into tb select @value,@A2,@A3,@A4,@A5
       
    ENDgo
    --调用
     [dbo].[proc_insert] '3302200','a2','a3','a4','a5'
     
     
     select * from tb
      

  8.   

    没明白什么意思,你可以前台代码调用存储过程,或者在sql查询分析器中直接掉用
    [dbo].[proc_insert] '3302200','a2','a3','a4','a5'
      

  9.   


    IF OBJECT_ID('tb') IS NOT NULL
    DROP TABLE tb
    GOcreate table tb
    (
      
      id int primary key, --需要有主键
      A1 varchar(10),
      A2 varchar(10),
      A3 varchar(10),
      A4 varchar(10),
      A5 varchar(10)
    )GoIF OBJECT_ID('MaxKey') IS NOT NULL
    DROP TABLE MaxKeyGO
    --自增主键管理表
    create table MaxKey
    (
       value int
    )insert into MaxKey select 226GoIF OBJECT_ID('[tr_insert]') IS NOT NULL
    DROP trigger [proc_insert]GO
    Create trigger tr_insert on tb
    for insert
    as  declare @sql varchar(8000)
      declare @value int
      declare @A1 varchar(10)
      update MaxKey set  value=value+1   --先更新再取出,防止多用户同时访问,造成主键重复
      select @value=value from MaxKey
      select @A1=A1 from inserted 
      update tb set A1=@value from tb where A1=@A1
      
      
      
      --测试
      insert into tb select 1,'A1','A2','A3','A4','A5'
       select * from tb
      

  10.   

    上面的有问题IF OBJECT_ID('tb') IS NOT NULL
    DROP TABLE tb
    GOcreate table tb
    (
      
      id int primary key, --需要有主键
      A1 varchar(10),
      A2 varchar(10),
      A3 varchar(10),
      A4 varchar(10),
      A5 varchar(10)
    )GoIF OBJECT_ID('MaxKey') IS NOT NULL
    DROP TABLE MaxKeyGO
    --自增主键管理表
    create table MaxKey
    (
       value int
    )insert into MaxKey select 226GoIF OBJECT_ID('[tr_insert]') IS NOT NULL
    DROP trigger [proc_insert]GO
    Create trigger tr_insert on tb
    for insert
    as  declare @sql varchar(8000)
      declare @value int
      declare @ID int
      update MaxKey set  value=value+1   --先更新再取出,防止多用户同时访问,造成主键重复
      select @value=value from MaxKey
      select @ID=ID from inserted 
      update tb set A1=@value from tb where ID=@ID
      
      
      
      --测试
      insert into tb select 1,'A1','A2','A3','A4','A5'
       select * from tb
      

  11.   

    谢谢各位  
    还有一个问题请教   A1是编号   但里面的的编号是根据A2 也就是name来排列的  只有name相同的编号才是有序的    现在是要name=zhangsan的时候  张三的编号自动修改并加1  别的name不需要修改 前台自己操作   这个该怎么操作啊