ich die PDO-Bibliothek in PHP und ich bin eine PostgreSQL-Anweisung wie folgt zu erzeugen:„UPDATE SET DO“ nicht wie erwartet funktioniert
INSERT INTO production_work (order_id, producer_id, sw)
VALUES (?,?,?)
ON CONFLICT (order_id, producer_id, day)
DO UPDATE SET sw = EXCLUDED.sw + ?
RETURNING ident
und für die Parameter der PDO execute() Erklärung Ich übergebe das Array [7172, 10, 1, 1]
.
Das production_work Tabelle einen Standardwert für den day
Parameter von now()
hat, weshalb ich es nicht passieren in und eine eindeutige Einschränkung auf die für den ON CONFLICT
Teil aufgeführten drei Felder gesetzt.
Wenn es keinen Konflikt gibt, ist es Einstellung korrekt den Wert des sw
Spalte 1. Wenn jedoch ein Konflikt ist, und der Wert dieser sw
Spalte ist zur Zeit 0, dann nach dieser Anweisung wird die sw
Spalte endet mit ein Wert von 2, nicht 1.
Was mache ich falsch?
Interessant. Also habe ich mein Beispiel vereinfacht. Zusammen mit sw habe ich etwa 10 weitere Spalten, die ich genau so benutze. Muss ich sie alle im Update-Teil auflisten? – Gargoyle
Ja, Sie sollten alle Spalten einstellen, die Sie aktualisieren möchten. – klin
Danke! Ich werde es versuchen, wenn ich heute Abend nach Hause komme. – Gargoyle