7
別のテーブルから削除した値を使用してテーブルを更新する必要があります。状況はSOのものと同様のコメント投票スコアキーパーです。私はポストグルを動作させるためにPythonを使用していますが、違いはありません。PostgresのUPDATEにDELETEの戻り値を使用する
query="""
UPDATE comment SET score=score-(DELETE FROM history
WHERE commentId=%(commentId)s AND
userIdentity=%(userIdentity)s RETURNING vote)
WHERE commentId=%(commentId)s;
"""
cursor.execute(query, data)
エラーが(DELETE FROM
で生じます。構文エラーが発生します。 DELETE
ステートメントをSELECT
ステートメントに置き換えることができます。これは機能しますが、ここには何か不足していますか?私は、更新で戻り値を使用したい。これは可能ですか?何かが助けます。
Releventスキーマ:
CREATE TABLE history (
commentId bigint,
vote int,
userIdentity varchar(256),
);
CREATE TABLE comment (
id bigint,
score bigint,
);
history.voteが正常に1
か-1
です。
を必要とするこれが歴史の中で投票を取り除く、意図したとおりに動作します投票スコアを原子的に更新する。ありがとう! – JDong
うわー、あなたは 'WITH'で1つのステートメントでどれほどのことができるのか驚くほどです。 – danneu