2017-06-23 2 views
0

In Tabelle:iBatis/Java - auf Konflikt auf Index

CONSTRAINT unique_position UNIQUE (id,city,type) 
CREATE UNIQUE INDEX unique_position_sat_null ON public."position" (id,city) where type is null 

Wenn wir in eine Tabelle mit iBatis einfügen möchten wir nutzen möchten:

ON CONFLICT ON INDEX unique_position DO UPDATE SET 
     ..... 

Wie ich verstehe wir nicht Index verwenden können in ON CONFLICT in POSTGRES.

Gibt es noch andere Optionen, um damit umzugehen? Danke.

Antwort

1

Dies ist doppelte Frage. Ich antwortete in Ihrem vorherigen POSTGRES - Handling several ON CONFLICT constraints/indexes

Kurz gesagt: Nein, es gibt derzeit keine Möglichkeit, einen partiellen Indexnamen in ON CONFLICT-Klausel zu erwähnen.

Ein Workaround in Ihrem Fall wäre (wahrscheinlich, je nach Ihrer Logik): aufhören zu verwenden NULL in "Typ" -Spalte überhaupt, verwenden Sie "-1" stattdessen und arbeiten mit 3-Spalte einzigartige Einschränkung.

+0

Danke, werde versuchen, stattdessen mit -1 zu gehen. –