Intereting Posts
Как написать запрос select с подзапросом с помощью laravel Eloquent Querybuilder? Как использовать подготовленный оператор для выбора запроса в Java? Entity Framework 6 несколько таблиц для одного кода взаимодействия с внешним ключом Postgresql: как создать таблицу только в том случае, если она еще не существует? Как вы делаете математику, которая игнорирует год? Как работают инструменты миграции схемы? rails добавить новую строку в таблицу SQL Group By и min (MySQL) Работа с датами в Access с использованием pyodbc, дающая ошибку «Слишком мало параметров» Как объединить две таблицы с разными номерами столбцов при удалении дубликатов? Общее количество блокировок превышает размер блокировки стола Что определяет порядок блокировки для запроса с несколькими таблицами? В операторе без () в выражении запроса Выберите родительскую строку из той же таблицы, когда включена дочерняя строка Запись csv-файла с цветовым кодом

Установите максимальное значение столбца в качестве значения начала последовательности с помощью тегов ликбазы

Интересно, возможно ли получить максимальное значение столбца из определенной таблицы и установить его как значение начальной последовательности без чистого sql. Следующий код не работает:

<property name="maxId" value="(select max(id)+1 from some_table)" dbms="h2,mysql,postgres"/> <changeSet author="author (generated)" id="1447943899053-1"> <createSequence sequenceName="id_seq" startValue="${maxId}" incrementBy="1"/> </changeSet> 

Появилась ошибка:

 Caused by: liquibase.parser.core.ParsedNodeException: java.lang.NumberFormatException: For input string: "${m" 

Я пробовал это без круглых скобок вокруг select ... и т. Д. С тем же результатом. Таким образом, невозможно использовать вычисленное значение в качестве значения начальной последовательности?

    Итак, такое решение сработало для меня:

     <changeSet author="dfche" id="1448634241199-1"> <createSequence sequenceName="user_id_seq" startValue="1" incrementBy="1"/> </changeSet> <changeSet author="dfche" id="1448634241199-2"> <sql dbms="postgresql">select setval('user_id_seq', max(id)+1) from jhi_user</sql> <sql dbms="h2">alter sequence user_id_seq restart with (select max(id)+1 from jhi_user)</sql> </changeSet> набор <changeSet author="dfche" id="1448634241199-1"> <createSequence sequenceName="user_id_seq" startValue="1" incrementBy="1"/> </changeSet> <changeSet author="dfche" id="1448634241199-2"> <sql dbms="postgresql">select setval('user_id_seq', max(id)+1) from jhi_user</sql> <sql dbms="h2">alter sequence user_id_seq restart with (select max(id)+1 from jhi_user)</sql> </changeSet>