Синтаксическая ошибка в выражении 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
);