[英]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.