Вам это не мешает. СУБД и только СУБД отвечает за создание значений первичного ключа и поддержание его ограничений. Делать это в своем клиенте просто ужасно не получится. Таким образом, вы столкнетесь сначала с гонкой.
Если вам нужен ключ чего-то, что вы только что вставили, SQL на самом деле имеет синтаксис OUTPUT . Однако я помню, что другие СУБД не имели ничего похожего. Но обычно вы можете сделать что-то, используя хранимый эквивалент функции и достаточно широкую транзакцию / блокировку.
В качестве примечания стоит упомянуть, что существует 3 способа для сохранения BLOBS с /в БД. Я не могу точно сказать, какой из 3 вы используете.