По крайней мере это возможно сделать через SQL, я не уверен, что вы можете сделать это в Quill без отдельного выбора данных.Версия для чистого SQL будет выглядеть примерно так (чистая память, поэтому возможны ошибки):
INSERT INTO table (42, 84, 'some_text', 9000)
ON CONFLICT DO UPDATE
SET some_text = 'some_text',
valid_until = (SELECT GREATEST(9000, valid_until) FROM table WHERE pk1=42 AND pk2=84 LIMIT 1));
Надеюсь, эта идея поможет вам двигаться вперед :) Возможно, вы можете имитировать ее как-нибудь в Quill.Обычно я стараюсь избегать фреймворков, которые стараются быть умными с базами данных, почти всегда они снова оказываются ловушкой Hibernate, где поиск избегания SQL заканчивается гораздо дороже, чем просто делает это.Может быть, фреймворки Scala лучше, хотя, по крайней мере, Scala лучше спроектирован для разработки таких фреймворков, поэтому, может быть, он лучше работает там.
Обновил ответ с помощью ON CONFLICT
, как описано здесь: Вставьте на дубликатеобновить в PostgreSQL?