Postgresは、タイプ IMMEDIATELYの制約をチェックすることにしました。 SQL標準で提案されているのとは異なる時間に。
具体的には、 SET CONSTRAINTS>
状態(私の強調):
Postgresは、 sort_orderの一時的な衝突を引き起こすプランを使用してこのクエリを実行することを選択します およびすぐに 失敗します。つまり、同じスキーマと同じデータに対して、実行プランに応じて同じクエリが機能したり失敗したりする可能性があります。
制約をDEFERRABLEにする必要があります またはDEFERRABLEINITIALLY DEFERRED 、トランザクションが終了するまで、またはステートメントが SET CONSTRAINTS ... IMMEDIATE になるまで、制約の検証を遅らせます。 実行されます。
@HansGinzelのコメントからの補遺: