On 2019-11-22 11:02, Alan J Davies alan.dav...@aldis-systems.co.uk [firebird-support] wrote: > Hi all, is it possible to update a table when the current_date in > rdb$database changes to the next day? > > I need to reset a delivery counter to 0 in all the orders on a system. > I can presently do this two ways. > > When I print a delivery label I do it via a SP... > cut-down start of SP > select current_date > from rdb$database > into :human_date; > select p.label_counter_date > from paramfil p > into :counter_date; > if (:human_date>:counter_date) then -- it must be the next day > begin > update paramfil p > set p.label_counter_date=current_date; > update orditems oi > set oi.label_day_count=0; > end > then continue with SP to print labels as normal > This does cause a delay to the first set of delivery labels printed > each > day. > > I could write and run a small Delphi program which would only have the > above code as an active item. I could then use Windows (its a Windows > 2016 server) to run this program at midnight plus a minute, as a > scheduled task. > > But that seems a lot for something I think I should do within the > database itself. I've tried to create a trigger on rdb$database but > cannot, I don't have it available and I understand that I should not > 'mess' with it anyway. > > Any help or suggestions gratefully received.
Firebird doesn't have a task scheduler, and there is no physical database change when the date changes, so you can't trigger an event. current_database is a function (or context variable), not a column in a database. Mark