0

我想创建一个插入具有某些条件的行的过程。我是这个领域的新手,请任何人帮助我做到这一点。

我的表结构是。

Id startDate enddate    transdate   status.
1  1/12/2012 30/12/2012 31/12/2013  CLOSED
2  1/1/2013  30/1/2013  31/1/2013   OPEN

我的查询逻辑在这里。

该程序每天运行。但程序检查最后一个条目 id=2 并检查交易日期。如果交易日期小于当前日期意味着。将最后一条记录状态更新为 CLOSED 并使用以下最后一条记录自动插入新记录。

Id startDate enddate    transdate   status.
1  1/12/2012 30/12/2012 31/12/2013  CLOSED
2  1/1/2013  30/1/2013  31/1/2013   CLOSED
2  1/2/2013  27/2/2013  28/2/2013   OPEN

任何人都可以帮助我做到这一点。

4

1 回答 1

1

这将是这样的:

create procedure updatetable()   
BEGIN
    declare found_id as int;
    select id into found_id from table where transdate >= curdate() and status = 'open';
    if (!is_null( found_id )) THEN
       update table set status = 'closed' where id = found_id;
       insert into table( startdate, enddate, transdate, status ) 
           values concat( year(curdate()), "-01-", month(curdate())), 
                  concat( year(curdate()), "-", LAST_DAY( curdate()), month(curdate())), curdate(),
                  "open" );
    END IF

END

您需要稍微调试一下,因为我只是在猜测语法。目的是检查transdate等于或晚于当前日期的任何条目。如果找到任何条目,则将该条目更新为“关闭”,并创建一个新条目,其中包含本月的第一个和最后一个日期,状态 =“打开”。

于 2013-01-20T12:23:46.293 回答