Keine Eindeutigkeits- oder Ausschlussbedingung, die dem ON CONFLICT entspricht

8

Ich erhalte den folgenden Fehler, wenn ich die folgende Art von Einfügung mache:

Abfrage:

%Vor%

Fehler:

  

SQL-Ausführung fehlgeschlagen (Grund: FEHLER: Es gibt keinen eindeutigen oder ausschließenden Fehler   Bedingung, die der ON CONFLICT-Spezifikation entspricht)

Ich habe auch einen einzigartigen INDEX:

%Vor%

Die Sache ist, dass es manchmal funktioniert, aber nicht jedes Mal. Ich nach dem Zufallsprinzip bekommen diese Ausnahme, die wirklich seltsam ist. Es scheint, dass es nicht darauf zugreifen kann INDEX oder es weiß nicht, dass es existiert.

Irgendwelche Vorschläge?

Ich benutze PostgreSQL 9.5.5.

Beispiel beim Ausführen des Codes, der versucht, ein Konto zu finden oder zu erstellen:

%Vor%

In diesem Fall bin ich sicher, dass das Konto nicht existiert. Darüber hinaus gibt es den Fehler nie aus, wenn die Person bereits einen Account hat. Das Problem ist, dass es in einigen Fällen auch funktioniert, wenn noch kein Account vorhanden ist. Die Abfrage ist genau gleich.

    
Tiago Babo 03.02.2017, 10:43
quelle

1 Antwort

1

Ich hatte keine Chance mit UPSERT zu spielen, aber ich glaube, Sie haben einen Fall Dokumente :

  

Beachten Sie, dass dies einen nicht partiellen eindeutigen Index (einen eindeutigen Index) bedeutet   ohne Prädikat) wird abgeleitet (und somit von ON CONFLICT verwendet)   ob ein solcher Index verfügbar ist, der alle anderen Kriterien erfüllt. Wenn ein   Versuch der Inferenz ist nicht erfolgreich, ein Fehler wird ausgelöst.

    
Vao Tsun 03.02.2017 13:43
quelle

Tags und Links