想在一个表上加一个新列,比如 C,要实现每添加一行数据,每个新插入行的列c等于新插入行的两个列a和b的值的运算,c=a+b/1000.
不知道这样的trigger语句怎么写呢?先谢谢了。

解决方案 »

  1.   

    mysql> create table t_magicleey1124(
        ->  a       int,
        ->  b       int
        -> );
    Query OK, 0 rows affected (0.11 sec)mysql> -- 在一个表上加一个新列,比如 C
    mysql> alter table t_magicleey1124 add c int;
    Query OK, 0 rows affected (0.11 sec)
    Records: 0  Duplicates: 0  Warnings: 0mysql>
    mysql> desc t_magicleey1124;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | a     | int(11) | YES  |     | NULL    |       |
    | b     | int(11) | YES  |     | NULL    |       |
    | c     | int(11) | YES  |     | NULL    |       |
    +-------+---------+------+-----+---------+-------+
    3 rows in set (0.01 sec)mysql>
    mysql> create trigger tr_t_magicleey1124_bi before insert on t_magicleey1124
        -> for each row
        ->  set new.c = new.a + new.b / 1000;
    Query OK, 0 rows affected (0.11 sec)mysql>
    mysql> insert into t_magicleey1124(a,b) values (1,1000);
    Query OK, 1 row affected (0.41 sec)mysql> insert into t_magicleey1124(a,b) values (200,4000);
    Query OK, 1 row affected (0.05 sec)mysql> select * from t_magicleey1124;
    +------+------+------+
    | a    | b    | c    |
    +------+------+------+
    |    1 | 1000 |    2 |
    |  200 | 4000 |  204 |
    +------+------+------+
    2 rows in set (0.00 sec)mysql>
      

  2.   

    可以参考一下官方手册中的触发器部分。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    还有一个问题,要求a和b都是int形式,c为double形式的,我按照你编的trigger,但是产生这样的错误。
    Column count doesn't match value count at row 1.
      

  4.   

    还有一个小问题,想给这个表再添加一个新的trigger,要实现这样的功能,每次update a或b的数据,要自动的update c的数据内容。