2013-02-07 4 views

Antwort

9

So:

UPDATE albumphoto SET order = 1 WHERE idtable = 1 AND idx = CAST (x AS INTEGER); 

(Verwenden Sie geeignete numerischen Typ statt INTEGER).

7

Oder einfacher:

UPDATE albumphoto 
SET order = 1 
WHERE idtable = 1 
AND idx = split_part(text, ',', 1)::int -- or whatever type it is 
AND order IS DISTINCT FROM 1; 

expression::type ist der einfache (nicht-SQL-Standard) Postgres Weg zu werfen. Details im Handbuch im Kapitel Type Casts.
Mehr über data types in PostgreSQL.

Das letzte Prädikat Ich habe nützlich ist, wenn order bereits 1 sein könnte, wobei in diesem Fall das Update würde nichts ändern, aber immer noch das gleiche kosten. Stattdessen nichts tun. (Man denke an den letzten Absatz) Verwandte:

Und Sie tun nicht Notwendigkeit eine Variable hier.

Verwandte Themen