7
我需要使用從另一個表中刪除的值更新表。這種情況是一個類似於SO的評論投票記分員。我使用python來運行postgres,但這不應該有所作爲。在Postgres中使用DELETE的UPDATE返回值更新
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
;會出現語法錯誤。我可以用SELECT
聲明替換DELETE
聲明,它會起作用,在這裏有什麼我不在的地方?我想在更新中使用返回值。這可能嗎?任何幫助。
培訓相關的模式:
CREATE TABLE history (
commentId bigint,
vote int,
userIdentity varchar(256),
);
CREATE TABLE comment (
id bigint,
score bigint,
);
history.vote通常爲1
或-1
。
這按預期工作,消除了歷史上投票並以原子方式更新投票分數。謝謝! – JDong
哇,在WITH WITH語句中你可以做多少事情是令人驚訝的。 – danneu