В качестве подхода, не зависящего от БД, вы можете рассмотреть возможность использования столбца «удаленный» или «неактивный», указывающего, следует ли возвращать результаты пользователям. Например, вы можете использовать целое число для столбца, исключая запись из поля зрения пользователя, если значение столбца не равно нулю. Таким образом, вместо выбора и вставки выше, вы можете сделать (все примеры на диалекте MySQL SQL):
UPDATE media SET inactive=1 WHERE stuff=1 OR stuff=2;
Это исключит записи из представления пользователя. Затем вы можете скопировать неактивные записи в «удаленную» таблицу и при желании удалить их из таблицы мультимедиа в зависимости от времени последнего обновления неактивных записей:
INSERT INTO deleted (stuff) SELECT stuff FROM media WHERE inactive = 1;
DELETE from media WHERE inactive <= 1;
Целое число может использоваться для идентификации "неактивного задания", которое "удаляет" записи.
Исходя из того, как вы описали схему, этот сценарий не совсем соответствует подходу блокировки, поскольку таблица «media» может быть изменена во время выполнения оператора UPDATE. Эту проблему можно решить (или, по крайней мере, смягчить), если бы существовал столбец, такой как отметка времени, который можно было бы использовать для дальнейшего определения записей для пометки неактивных.