1

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)
4

0 に答える 0