H2 を使用して、行を更新しようとします。存在しない場合は、挿入したいと思います。 同時実行の問題を回避するために、可能であれば、すべてを 1 つの SQL ステートメントで実行したいと考えています。
これまでのところ、更新があります:
UPDATE RATING
SET NUM_RATINGS = (SELECT NUM_RATINGS + 1 FROM RATING WHERE EVENT_UID = :eventUid)
, SUM_RATINGS = (SELECT SUM_RATINGS + :newRating FROM RATING WHERE EVENT_UID = :eventUid)
WHERE EVENT_UID = :eventUid AND EXISTS ( SELECT * FROM RATING WHERE EVENT_UID = :eventUid)
テーブル定義は次のとおりです。
CREATE TABLE RATING (
ID BIGINT NOT NULL,
EVENT_UID VARCHAR(255) NOT NULL,
SUM_RATINGS BIGINT NOT NULL,
NUM_RATINGS INT NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (EVENT_UID) REFERENCES EVENT(UID)
)
Updateステートメントを改善できる人はいますか?
行が存在しない場合、同じ SQL ステートメントで次のような挿入を追加するにはどうすればよいですか?
INSERT INTO RATING ( ID , EVENT_UID , NUM_RATINGS , SUM_RATINGS )
VALUES (2, 'BWEIY-A4', 1, 4)