PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann man in Postgres bei Konflikten in einer von 2 Spalten einsteigen?

Ja, und dieses Verhalten ist Standard. Jede eindeutige Einschränkungsverletzung stellt einen Konflikt dar und dann das UPDATE wird ausgeführt, wenn ON CONFLICT DO UPDATE angegeben. Das INSERT -Anweisung kann nur einen einzigen ON CONFLICT haben -Klausel, sondern das conflict_target dieser Klausel kann mehrere Spaltennamen angeben, von denen jeder einen Index haben muss, z. B. UNIQUE Zwang. Sie sind jedoch auf eine einzige conflict_action beschränkt und Sie haben keine Informationen darüber, welche Einschränkung den Konflikt verursacht hat, wenn Sie diese Aktion verarbeiten. Wenn Sie diese Art von Informationen oder eine bestimmte Aktion abhängig von der Einschränkungsverletzung benötigen, sollten Sie eine Triggerfunktion schreiben, aber dann verlieren Sie die überaus wichtige Unteilbarkeit des INSERT ... ON CONFLICT DO ... Aussage.