Postgres решава да провери ограничения от тип IMMEDIATELY в различно време от предложеното в SQL стандарта.
По-конкретно, документацията за SET CONSTRAINTS
заявява (подчертаването е мое):
Postgres избира да изпълни тази заявка, използвайки план, който води до временен сблъсък за sort_order иВЕДНАГА не успява. Имайте предвид, че това означава, че за една и съща схема и едни и същи данни една и съща заявка може да работи или да се провали в зависимост от плана за изпълнение.
Ще трябва да направите ограничението DEFERRABLE или DEFERRABLE INITIALLY DEFERRED , което забавя проверката на ограничението до края на транзакцията или до момента, в който се появява израз SET CONSTRAINTS ... IMMEDIATE се изпълнява.
Допълнение от коментара на @HansGinzel: