• Another option would be to do the delete on an insert trigger, it would add additional overhead on the table, but if the table does not have too much activity then it should be fine. So the table with the trigger would constantly maintain itself. On the one hand it creates additional overhead, but the deletes will be done over smaller data sets because it may be executed more frequently, so it may even out.

    You would still need a column that has the creation time of each record.