在问一个问题
我现在要在三层里的一个表新增一个记录
可是这个表有个编号字段要按照WD0001,WD0002自动编号这样排序下来,现在我在一台机子新增记录,但是还没有保存,又在另一个机子上新增一条记录,问题出现了,现在有两个编号一样的,要什么办

解决方案 »

  1.   

    最好在数据库上作,推荐写一个Insert触发器,在触发器里赋值。
      

  2.   

    zzllabc(抱朴子--清心释累,绝率忘情) :你这个触发器要什么写
    我还不懂写,你能不能帮我写一下
      

  3.   

    CREATE TRIGGER TruckUser_Insert ON TruckUser
                   ^^触发器名           ^^^对那个表操作   
    FOR Insert--此触发器在Insert时触发 
    AS
    --你的SQL语句  go
      

  4.   

    我以前就是用 Trigger 来解决这个问题的。
      

  5.   

    “ hanlin2004(青山隐不住) :
    增加一个表,保存各个表中的最大编号你根据这个表中的信息取得编号,计算后更新最大编号,这样就不会重复”没错我以前在公司实习也是这样做的
      

  6.   

    例:
    表aa:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SaveCode]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
    drop trigger [dbo].[SaveCode]
    GOCREATE TABLE [dbo].[aa] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [Code] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Memo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO在表aa上创建触发器SaveCode:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[aa]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[aa]
    GOCREATE TRIGGER SaveCode ON [dbo].[aa] 
    FOR INSERT
    AS
    declare @MaxCode int
    declare @MCode varchar(10)
    select @MaxCode=ISNull( MAX(CONVERT(int, SUBSTRING(Code, 3, LEN(Code)))),0) FROM aa
    set @MaxCode=@MaxCode+1
    set @MCode=convert(varchar(10),@MaxCode)
    while Len(@MCode)<4
    begin
      set @MCode='0'+@MCode
    end
    update aa set Code='WD'+@MCode
      where aa.id=(select id from inserted)