请教:现在向一个表中插入数据,需要处理主键,我想实现主键自动加一的功能,如何实现?

解决方案 »

  1.   

    create table tb(主键 int identity(1,1), col varchar(32))insert tb select 'asdf'
    union all select 'zxcv'select * from tbdrop table tb/*
    主键          col
    ----------- --------------------------------
    1           asdf
    2           zxcv(2 row(s) affected)
    */
      

  2.   

    建立主键时  设为自增量 
    create table 表(主键 int identity(1,1), column varchar(10))
      

  3.   


    alter table t
    add id int identity(1,1)
      

  4.   

    create function dbo.autoid()
        returns int
    as
    begin
        declare @id int
        select @id=max(id) from tb
        return isnull(@id,0)+1
    end
    gocreate table tb(id int default dbo.autoid(),col int)insert into tb(col) values(10)
    insert into tb(col) values(20)自做自增列.
      

  5.   

    表结构不能改的话,只能用instead of insert触发器实现
      

  6.   

    自动加一主键create table T(ID int identity primary key ,Name nvarchar(20))
      

  7.   


    CREATE FUNCTION f_NextBH()
    RETURNS char(8)
    AS
    BEGIN
    RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
    END
    GO--在表中应用函数
    CREATE TABLE tb(
    BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
    col int)--插入资料
    BEGIN TRAN
    INSERT tb(col) VALUES(1)
    INSERT tb(col) VALUES(2)
    INSERT tb(col) VALUES(3)
    DELETE tb WHERE col=3
    INSERT tb(col) VALUES(4)
    INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
    COMMIT TRAN--显示结果
    SELECT * FROM tb
    /*--结果
    BH         col 
    ---------------- ----------- 
    BH000001  1
    BH000002  2
    BH000003  4
    BH000004  14
    --*/