Ja, en dit gedrag is standaard. Elke unieke schending van een beperking vormt een conflict en vervolgens wordt de UPDATE
wordt uitgevoerd als ON CONFLICT DO UPDATE
is gespecificeerd. De INSERT
statement kan slechts één ON CONFLICT
. hebben clausule, maar de conflict_target
van die clausule kan meerdere kolomnamen specificeren die elk een index moeten hebben, zoals een UNIQUE
beperking. U bent echter beperkt tot een enkele conflict_action
en u zult geen informatie hebben over welke beperking het conflict heeft veroorzaakt bij het verwerken van die actie. Als je dat soort informatie of specifieke actie nodig hebt, afhankelijk van de schending van de beperking, moet je een triggerfunctie schrijven, maar dan verlies je de allerbelangrijkste atomiciteit van de INSERT ... ON CONFLICT DO ...
verklaring.