Как создать последовательность с максимальным значением строки столбца в БД HSQL? - PullRequest
0 голосов
/ 10 октября 2019

Мне нужно создать последовательность, которая начинается с максимального значения строки столбца в HSQL. Есть ли какая-нибудь процедура, которую мы можем исправить?

CREATE SEQUENCE seq НАЧАТЬ С 1 УВЕЛИЧЕНИЕМ НА 1 => Работает нормально

Вместо этого, если я даю как CREATE SEQUENCE seq НАЧАТЬ С ВЫБРАТЬ MAX (ID) ИЗTEST INCREMENT BY 1

показывает ошибку: неожиданный токен: SELECT / код ошибки: -5581 / состояние: 42581

1 Ответ

0 голосов
/ 10 октября 2019

Я не уверен, что правильно понимаю ваш вопрос, но в H2 вы можете использовать

CREATE SEQUENCE SEQ START WITH 9223372036854775807 INCREMENT BY -1

Он вернет значения 9223372036854775807, 9223372036854775806, 9223372036854775805,…

В HSQLDB выможно использовать очень похожие

CREATE SEQUENCE SEQ START WITH 2147483647 INCREMENT BY -1

Для столбцов, которые не могут содержать такие большие значения, начальное значение следует уменьшить.

Если у вас есть таблица с существующими значениями и вы хотите найтисамый большой из них и использовать его в качестве начального значения последовательности, в H2 вы можете напрямую использовать подзапрос:

CREATE SEQUENCE SEQ START WITH (SELECT MAX(columnName) FROM tableName)

Вы можете добавить 1 к результату запроса. Я не знаю, как это сделать в HSQLDB только с SQL.

Возможно, вы имеете в виду что-то еще, вам определенно следует отредактировать свой вопрос и предоставить более подробную информацию.

...