繁体   English   中英

有条件在mysql中插入过程

[英]Insert procedure in mysql with condition

我想创建一个在某些情况下插入行的过程。 这是该领域的新手,请任何人帮助我做到这一点。

我的表结构是。

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的条目并检查交易日期。 如果交易日期小于当前日期,则将最后一条记录状态更新为“已关闭”,并自动将新记录与下面的最后一条记录一起插入。

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

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

将会是这样的:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM