A表先生成一条记录
得到A表此记录的字段S的值
用字段S的值做关键字生成B表记录
如果不生成,所有回滚急求一个例子,谢谢。
我写事物后提示错误:
Explicit or implicit commit is not allowed in stored function or trigger

解决方案 »

  1.   

    mysql> create table a (id int,s int);
    Query OK, 0 rows affected (0.09 sec)mysql> create table b (s int primary key);
    Query OK, 0 rows affected (0.06 sec)mysql>
    mysql> delimiter |
    mysql>
    mysql> CREATE TRIGGER tr_a_bi BEFORE INSERT ON a
        ->   FOR EACH ROW BEGIN
        ->     INSERT INTO b SET s = NEW.s;
        ->   END;
        -> |
    Query OK, 0 rows affected (0.08 sec)mysql>
    mysql> delimiter ;
    mysql>
    mysql> insert into a values (1,1);
    Query OK, 1 row affected (0.05 sec)mysql> select * from a;
    +------+------+
    | id   | s    |
    +------+------+
    |    1 |    1 |
    +------+------+
    1 row in set (0.00 sec)mysql> select * from b;
    +---+
    | s |
    +---+
    | 1 |
    +---+
    1 row in set (0.00 sec)mysql>
    mysql> insert into a values (2,1);
    ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
    mysql> select * from a;  -- 记录未插入。如果不生成,所有回滚
    +------+------+
    | id   | s    |
    +------+------+
    |    1 |    1 |
    +------+------+
    1 row in set (0.00 sec)mysql> select * from b;
    +---+
    | s |
    +---+
    | 1 |
    +---+
    1 row in set (0.00 sec)mysql>
      

  2.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
      

  3.   

    在TRIGGER中不能使用事务,在表中设置主键,重复则提示,在TRIGGER中
    FOR EACH ROW BEGIN
            INSERT INTO b(s) values(NEW.s);
           END;