在特定条件下将数据从另一个表插入到一个表中

时间:2015-09-22 08:28:53

标签: mysql

我有" table1"其中主数据存储如 -

id  name    create_date validity    expire_date
    1   A       2015-08-01  3           2015-11-01
    2   B       2015-09-01  12          2016-08-01
    3   C       2015-09-15  1           2015-10-15

但现在想要在" table2"中插入数据对于expire_date,根据有效期而不改变前端。使用触发器或程序想要实现此任务。

   id    parent_id   expire_date   
    1     1           2015-09-01
    2     1           2015-10-01
    3     1           2015-11-01

如何使用程序或触发器实现此目的。

2 个答案:

答案 0 :(得分:0)

很难具体,因为你的问题并不具体。

一般来说,这是设计查询以将内容从一个表插入另一个表的过程。

首先,编写一个SELECT查询,生成一个结果集,其中包含要插入表中的行和列。使用列列表来获取正确的列,并使用适当的WHERE子句来获取正确的行。查询和结果集的眼球,以确保它包含正确的信息。

第二次,在

之前添加调试后的SELECT查询
INSERT INTO target_tablename (col, col, col)

测试此项以确保将正确的行插入目标表。

第三次,在MySQL服务器中创建一个EVENT来运行您刚刚编写的查询。该活动将在一天中的适当时间运行您的查询。

如果你不采取这些步骤,你可能会非常困惑。

答案 1 :(得分:0)

可以使用存储过程实现任务 -

CREATE DEFINER=`root`@`localhost` PROCEDURE `addexpire`(IN uname varchar(50), IN cdate date, IN vm int)
BEGIN
    insert into table1 (name,create_date,validity) values (uname,cdate,vm);
    BEGIN
    declare uparent_id INT;
    declare v_val int default 0;
    SET uparent_id = LAST_INSERT_ID();
    while v_val < vm do
        BEGIN
            declare expire_date date;   
            SET expire_date =  DATE_ADD(cdate,INTERVAL v_val+1 MONTH);
            insert into table2 (parent_id,expire_date) values (uparent_id,expire_date);
            set v_val=v_val+1;
        END;
    end while;
  END;
END