Синтаксическая ошибка в выражении SQL: org.h2.jdbc.JdbcSQLSyntaxErrorException. Не понимаю что за ошибка. Помогите?

Вот пример кода в которой выявляется синтаксическая ошибка. не понимаю где именно

private final String ACCOUNT_UPDATE =
                "BEGIN; UPDATE account\n" +
                "SET balance = balance - amount\n" +
                "FROM transaction\n" +
                "WHERE account.id = transaction.from_account_id\n" +
                "  and transaction.to_account_id is not null;\n" +
                "UPDATE account\n" +
                "SET balance = balance + amount\n" +
                "FROM transaction\n" +
                "WHERE account.id = transaction.to_account_id\n" +
                "  and transaction.from_account_id is not null;\n" +
                "\n" +
                "--трата денег\n" +
                "UPDATE account\n" +
                "SET balance = balance - amount\n" +
                "FROM transaction\n" +
                "WHERE account.id = transaction.from_account_id\n" +
                "  and transaction.to_account_id is null;\n" +
                "\n" +
                "--поступление денег\n" +
                "UPDATE account\n" +
                "SET balance = balance + amount\n" +
                "FROM transaction\n" +
                "WHERE account.id = transaction.to_account_id\n" +
                "  and transaction.from_account_id is null;\n" +
                "END";

Ответы (1 шт):

Автор решения: Alexandr

Согласно документации H2 не поддерживает UPDATE JOIN синтаксис. Подробнее тут.

Вы можете сделать что-то похожее:

UPDATE account a
SET
    a.balance = (
        SELECT
            a.balance - t.amount
        FROM
            transaction t
        WHERE
            a.id = t.from_account_id
    )
WHERE
    EXISTS (
        SELECT
            1
        FROM
            transaction
        WHERE
            a.id = t.from_account_id
    );
→ Ссылка