結論から書くと、PostgreSQLにはINSERT OR UPDATEという書き方は出来ない。

UPDATE
    table_name
SET field1 = 'C',
    field2 = 'Z',
WHERE
    id = 3;
とやってから
INSERT INTO
    table_name ( id, field1, field2 )
SELECT 3, 'C', 'Z'
    WHERE NOT EXISTS ( SELECT 1 FROM table_name WHERE id = 3 );
とやる。
1個目( UPDATE文 )は、条件にマッチしなければUPDATEは行われない事を逆手に取ってUPDATE文を投げている。
2個目( INSERT文 )は、SELECT結果をINSERTする方法を使ってデータの登録を行っている。