Verwenden des Rückgabewerts von DELETE für UPDATE in Postgres
Ich muss eine Tabelle mit einem Wert aktualisieren, der aus einer anderen Tabelle gelöscht wurde. Die Situation ist ein Kommentar-Voting-Scorekeeper ähnlich dem auf SO. Ich benutze Python, um die Postgres zu bearbeiten, aber das sollte keinen Unterschied machen.
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)
Der Fehler tritt bei auf(DELETE FROM
; Es tritt ein Syntaxfehler auf. Ich kann das ersetzenDELETE
Aussage mit einemSELECT
Aussage und es wird funktionieren, fehlt hier etwas? Ich möchte den Rückgabewert in einem Update verwenden. Ist das möglich? Alles hilft.
Relevantes Schema:
CREATE TABLE history (
commentId bigint,
vote int,
userIdentity varchar(256),
);
CREATE TABLE comment (
id bigint,
score bigint,
);
history.vote ist normalerweise1
oder-1
.