表1 T1(id title)  表2 T2(id tid title)主外键关系为:T2.tid=T1.id现在想在T1上建立个触发器:   要求在T1增加一行记录时,T2表也相应增加一行 当然 要求T2增加的记录必须满足:T2.tid=T1.id  T2.title=T1.title 

解决方案 »

  1.   

    create trigger tr_t1_ai after insert on t1
    for each row
    insert into t2(tid,title) values (new.id,new.title);
      

  2.   


    我就这样写的  但是不行 编译触发器不报错  但是T1插入记录时 报错Can't update table 'T1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
      

  3.   

     T2 上你是不是有 insert 的触发器来操作T1? 这样会导致循环触发!
      

  4.   

    啊,对 应该是这个原因了,那怎么解决呢T2的触发器是:每当T2增加记录时,让T1表字段 number+1,删除时 number-1现在还想实现T1的触发器 怎么解决呢
      

  5.   

    因为是在t1上插入记录时才插入记录到t2,把两个插入触发器合并就没有问题了。create trigger tg_insert_t1 after insert on t1
    for each row begin
        insert into t2(tid,title) values (new.id,new.title);
        update t1 set `number` =`number` +1 where id=new.tid;
    end删除触发器就建立在t2上即可,这个单向的,不会死循环。
      

  6.   

    create trigger tg_insert_t1 after insert on t1
    for each row begin
        insert into t2(tid,title) values (new.id,new.title);
        update t1 set `number` =`number` +1 where id=new.tid;
    end这个语句应该不会被通过啊。
      

  7.   


    思路好像对 ,编译触发器 没错 ,但是T1表插入还是报错:
    Can't update table 'T1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
      

  8.   

    show triggers;
    看一下你的触发实际内容是什么。
      

  9.   

    T1 triggers:CREATE
        TRIGGER `T1_ai` AFTER INSERT ON `T1` 
        FOR EACH ROW   BEGIN
        insert into T2(tid) values(NEW.id);
        update T1 set NEW.number=NEW.number+1 where NEW.id=T2.tid;
        END;$$DELIMITER ;
      

  10.   

    这个问题 没有解决的办法了吗   自己ding
      

  11.   

    CREATE
        TRIGGER `T1_ai` AFTER INSERT ON `T1` 
        FOR EACH ROW   BEGIN
        insert into T2(tid) values(NEW.id);
        update T1 set NEW.number=NEW.number+1 where NEW.id=T2.tid;
        END;$$DELIMITER ;
    你这一句导致触发器循环,递归下去了。你需要重新设计你的业务逻辑。
      

  12.   

    如果在T2中加入个字段 fl (fl判断是谁的回复 admin管理员   user用户)当T2发生 insert 后判断 fl  如果fl=admin  不发生T1 number+1  否则 T1 number+1这样是否还会有死循环  如果没有 该什么写呢