本帖最后由 kiruya0 于 2010-03-29 12:22:53 编辑

解决方案 »

  1.   

    你是写在同一事务了?
    你可以采用AFTER 或FOR 触发器呀,插入成功后触发CREATE TRIGGET TRI_IN_A ON A FOR INSERT
    AS
     BEGIN
          INSERT B SELECT * FROM INSERTED I 
    WHERE NOT EXISTS(SELECT 1 FROM B WHERE I.ID=B.ID)
     END
      

  2.   

    用AFTER也一样
    如果触发器出错   表A一样插入不了记录
      

  3.   

    执行b的插入后,你可以判断 @@ERROR 
    然后决定是否TEMP_ERROR
      

  4.   

    NOT EXISTS(SELECT 1 FROM B WHERE I.ID=B.ID)
    已经先判断了有没重复的
      

  5.   

    使用跨库查询 一个库挂了或者出问题不能正常插入记录的话
    能否判断写@@ERROR 是什么格式的?
      

  6.   

    create table a
    (
    id int identity(1,1),
    names varchar(20)
    )
    go
    create table b
    (
    id int identity(1,1),
    names varchar(20) unique
    )
    go
    create trigger t_info
    on a
    instead of insert
    as
    insert into a select names from inserted
    declare @name varchar(20)
    set @name=(select names from inserted)
    if exists (select names from b where names=@name)
    begin
    --在这里向表TEMP_ERROR添加记录
    end
    else
    insert into b select names from inserted