0

postgresで次のSQLクエリを実行しようとしています:

INSERT INTO Works_On (ESSN,PNo,Hours) VALUES ('199112111',3,3)
ON DUPLICATE KEY UPDATE Hours = 3;

しかし、そうすると、次のエラーが表示されます。

psql:test2.sql:2: ERROR:  syntax error at or near "ON"
LINE 2: ON DUPLICATE KEY UPDATE Hours = 3;
        ^

エラーを実際に見つけることができません。助けていただければ幸いです。

4

1 に答える 1

1

ON DUPLICATE KEY UPDATEpostgresql では使用できません。次のクエリを実行できます。

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);

ここで、UPDATEの行がすでに存在する場合、クエリは成功します。ESSN='199112111' AND PNo=3

INSERTESSN='199112111' AND PNo=3行が存在しない場合、クエリは成功します。

于 2014-03-15T12:52:57.317 に答える