Решением является использование функции Java, такой как:
drop all objects;
create table if not exists do_not_brick(id int);
create alias query as $$
String query(Connection conn, String sql) throws SQLException {
ResultSet rs = conn.createStatement().executeQuery(sql);
rs.next();
return rs.getString(1);
}$$;
alter table do_not_brick alter column id set default
ifnull(query('select max(id) from do_not_brick for update')+1, 0);
insert into do_not_brick() values(), (), ();
select * from do_not_brick;
Кстати, «кирпич» относительный ... вы все равно можете получить данные, используя инструмент восстановления. Но, конечно, это нехорошо, и будет исправлено в следующем выпуске. Проблема в том, что H2 не ограничивает то, что вы можете сделать в предложении по умолчанию. Другие базы данных просто не допускают никаких запросов в предложении по умолчанию, но я думаю, что это робко (это правильное слово?), Я постараюсь найти лучшее решение (возможно, разрешить это). Что вы предлагаете?