table:
--duedate timestamp
--submissiondate timestamp
--blocksreq numeric
--file clob
--email varchar2(60)
各エントリは、blocksreqを実行するためのファイルです。1日あたり8ブロックが割り当てられます(ただし、後で変更できます)。テーブルに挿入する前に、NOW()と@duedateの時間枠でそれを達成するのに十分なブロックがあることを確認したい
私は次のことを考えていましたが、私はそれを間違っていると思います:
R1 = select DAY(), @blocksperday - sum(blocksreq) as free
from table
where @duedate between NOW() and @duedate
group by DAY()
order by DAY() desc
R2 = select sum(a.free) from R1 as a;
if(R2[0] <= @blocksreq){ insert into table; }
部分的な擬似コードを許してください。
SQLフィドル: http ://sqlfiddle.com/#!2 / 5bda5
警告:私のSQLフィドルにはガベージコードがあります...多くのテストケースを作成する方法がわからないためです。また、期日をNOW()+5日に設定しません