CREATE TRIGGER Trg_Name
ON 表
FOR INSERT
    UpDate 表 Set ID=(Select ID=Max(ID)+1 from 表) from inserted where
     表.主键=Inserted.主键
GO

解决方案 »

  1.   

    如果有可能一次插入多条,需要用游标进行处理也可以先把原id列删除,再加上id列,设为自增
      

  2.   

    不会,你是如何导入数据的,用TRIGGER不好。
    你将你的具体的步骤说一下,其实你可以直接
    USE pubs
    GO
    SELECT c.*, o.*
    FROM Northwind.dbo.Customers AS c INNER JOIN 
       OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) 
       AS o
       ON c.CustomerID = o.CustomerID 
    GO
      

  3.   

    --呵呵,罗嗦一些
    CREATE TRIGGER Trg_table_insert
    ON 表
    instead of  INSERT
    as 
    set nocount on
    declare @ID int
    Select @ID=Max(ID)+1 from 表
    insert 表 values(@ID,........)
        
      

  4.   

    我是用PB的数据管道导的数据。
    Acess :source   :id 自动编号,
    SQL   :destination:id int
      

  5.   

    如果是单个表大可不比这样多个关系表的话,通过set identity off插入之后再set identity on
      

  6.   

    97866:
    我用下面的代码创建成功。
    CREATE TRIGGER trg_aqgj_dm
    ON dbo.aqgj_dm
    FOR INSERT
        UpDate dbo.aqgj_dm Set ID=(Select ID=Max(ID)+1 from dbo.aqgj_dm) from inserted where
        dbo.aqgj_dm.id=Inserted.id
    GO
    但我在表中新增记录,id 并没有自动增加。
    请问这是怎么回事。sdhdy:
    我是菜鸟,你建的触发器在什么时候执行?
    我执行下面的语句:
    CREATE TRIGGER Trg_table_insert
    ON dbo.aqgj_dm
    instead of  INSERT
    as 
    set nocount on
    declare @ID int
    Select @ID=Max(ID)+1 from dbo.aqgj_dm
    insert dbo.aqgj_dm values(@ID)
    错误提示:
    插入错误: 列名或所提供值的数目与表定义不匹配

    我不知道怎么办,帮帮忙!
      

  7.   

    CREATE TRIGGER 名 on 表
    INSTEAD OF INSERT
    AS
    BEGIN
      INSERT 表 SELECT isnull(max(id),0)+1,其他列  FROM inserted
    END
      

  8.   

    Alter Table yourTableName Drop Column id
    Alter Table yourTableName Add  id Int Identity(1,1)
      

  9.   

    问题是这样解决的:
    1.在SQL数据库中分别建立有ID的表的复表(该表的结构与ID对应的表一样,只是ID为INT类型);
    2.用数据管道将ACESS中的数据导入到SQL数据库中的复表.
    3.利用语句:SET identity_insert off;
               INSERT INTO 表 SELECT * FROM 复表;           SET identity_insert on;
    将数据导入.
    4.将复表删除.