Если конкретное ограничение не «отложено», оно будет проверено в точке выполнения оператора.Если оно отложено, оно будет проверено в конце транзакции.Я предполагаю, что вы не откладывали свой ПЕРВИЧНЫЙ КЛЮЧ, и поэтому вы получаете нарушение даже до того, как совершите коммит.
То, как это действительно делается, является подробностью реализации и может различаться в разных системах баз данных и даже в версияхта же система.Разработчик приложения, вероятно, не должен делать слишком много предположений по этому поводу.В случае Oracle PRIMARY KEY использует базовый индекс для повышения производительности, в то время как существуют системы, которым даже не требуется индекс (если вы можете жить с соответствующим падением производительности).
Кстати, отсроченный OracleОграничение PRIMARY KEY основано на неуникальном индексе (по сравнению с неотложным PRIMARY KEY, который использует уникальный индекс).
--- EDIT ---
Я только что понял, что вы этого не сделалидаже совершить первую вставку.Я думаю, что ответ Джастина хорошо объясняет, как то, что по сути является конфликтом блокировки, приводит к остановке одной из транзакций.