записей в таблицу по каждому к примеру юзеру . Тут встает вопрос конкурентности insert
Можно сделать что-то типа,
insert into street (type) select * from (select 'address') t where (select count(*) from street) < 10;
или
добавить CONSTRAINT cur_limit CHECK (cur_limit > 0 and cur_limit <= 10)
Вопрос с конкурентности можно решить только с повышением уровня изоляции до serializable, но как правило советуют избегать этого уровня изоляции . Как более правильнее реализовать ?
> но как правило советуют избегать этого уровня изоляции А Вы не слушайте тех, кто такую чушь советует. ;) Где Вы взяли это "как правило", кстати? А так, если предрассудки что-то не позволяет использовать нормальное решение — Вас ждут триггеры + денормализация, скорее всего.
можно попробовать написать функцию, которая сначала выбирает и блокирует используемые строки, а потом вычисляет и вставляет.
Обсуждают сегодня