ON DUPLICATE KEY UPDATE
is not available in postgresql. You can run the following query.
UPDATE Works_on SET Hours = 3 WHERE ESSN='199112111' AND PNo=3;
INSERT INTO table (id, field, field2)
SELECT '199112111',3,3
WHERE NOT EXISTS (SELECT 1 FROM Works_on WHERE ESSN='199112111' AND PNo=3);
Here , UPDATE
query will succeed if there is already a row with ESSN='199112111' AND PNo=3
INSERT
query will succeed if row with ESSN='199112111' AND PNo=3
does not exist.