Краткий ответ: вы не можете.
цель внешнего ключа состоит в том, чтобы убедиться, что всякий раз, когда этот атрибут имеет значение, значение находится в ссылочной таблице (кроме случаев, когда значение равно NULL---NULL не обязательно должен существовать в таблице).
Два предложения:
Решение 1. Сохраните кортеж в таблице 2, не удаляйте его.Вместо этого добавьте логический атрибут, который определяет, был ли кортеж удален.
Специально для вашей проблемы.Добавьте атрибут, удаленный в таблицу.Установите для по умолчанию значение false.И когда кортеж будет удален, создайте триггер, чтобы вместо этого атрибута установить значение true.Это громоздко и подвержено ошибкам.
Решение 2 (это мое предпочтительное решение).Вы можете использовать третью таблицу, которая управляется с помощью триггеров.Каждый раз, когда добавляется кортеж в table2, добавляется кортеж в table3.Table3 будет иметь только один атрибут (тот, на который вы хотите ссылаться на внешний ключ).Table3 будет набором всех значений атрибута, которые были частью Table2.Триггер для добавления в Table3 должен использовать upsert, если добавленный атрибут уже был виден ранее.В этом случае Table1 будет иметь ограничение внешнего ключа, указывающее на Table3.