Potrzebuję zaktualizować tabelę przy użyciu wartości usuniętej z innej tabeli. Sytuacja jest podobna do tej, która dotyczy SO. Używam Pythona do pracy PostgreSQL, ale to nie powinno mieć znaczenia.Używanie wartości zwracanej z polecenia DELETE dla aktualizacji w Postgresie
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)
Błąd pojawia się na (DELETE FROM
; powstaje błąd składni. Mogę zastąpić oświadczenie DELETE
oświadczeniem SELECT
i będzie działać, czy jest coś, czego tu brakuje? Chcę użyć zwracanej wartości w aktualizacji. czy to możliwe? Wszystko pomaga.
dowiemy się z schematu:
CREATE TABLE history (
commentId bigint,
vote int,
userIdentity varchar(256),
);
CREATE TABLE comment (
id bigint,
score bigint,
);
history.vote normalnie 1
lub -1
.
ten działa zgodnie z przeznaczeniem, usuwając głosowanie w historii i aktualizowanie wyniku głosowania atomicznie. Dzięki! – JDong
Wow, to niesamowite, ile możesz zrobić w jednym komunikacie z 'WITH'. – danneu