Если у вас есть индекс UNIQUE
или PRIMARY KEY
на ReportProcessGenerator.Type
, то ваши хранимые процедуры не смогут одновременно изменять запись для одного и того же типа.
Обратите внимание, что вы должны использовать предложение SELECT FOR UPDATE
или OUTPUT
, чтобы избежать взаимоблокировок, как указывает @Martin. При SERIALIZABLE
одновременные SELECT
запросы не снимают общие блокировки, которые UPDATE
запросы не смогут позже обновить.
Однако, почему вы хотите поддерживать отдельные идентификаторы для каждого типа? Как правило, одна идентичность, уникальная для разных типов, так же хороша, как и несколько уникальных для типов, причем первая намного легче поддерживать.